这个题就是给一个数(1-3999)转换为罗马计数,说简单不简单,说难不难。
附上百度百科:http://baike.baidu.com/link?url=TR8d0KXBBMWZffIDqBd_IFPSi0RZkB06DpUlsaZs-9_gCLNQaIVd2VmMwyf-3zG8
代码如下:
class Solution { public: string intToRoman(int num) { // Note: The Solution object is instantiated only once and is reused by each test case. char schar[10]; int index = 0; int count; if(num / 1000 != 0) { count = num / 1000; num = num % 1000; for(int i = 0;i < count;i++) { schar[index++] = 'M'; } } if(num / 100 != 0) { count = num / 100; num = num%100; switch(count) { case 1: schar[index++] = 'C'; break; case 2: schar[index++] = 'C'; schar[index++] = 'C'; break; case 3: schar[index++] = 'C'; schar[index++] = 'C'; schar[index++] = 'C'; break; case 4: schar[index++] = 'C'; schar[index++] = 'D'; break; case 5: schar[index++] = 'D'; break; case 6: schar[index++] = 'D'; schar[index++] = 'C'; break; case 7: schar[index++] = 'D'; schar[index++] = 'C'; schar[index++] = 'C'; break; case 8: schar[index++] = 'D'; schar[index++] = 'C'; schar[index++] = 'C'; schar[index++] = 'C'; break; case 9: schar[index++] = 'C'; schar[index++] = 'M'; break; } } if(num / 10 != 0) { count = num / 10; num = num%10; switch(count) { case 1: schar[index++] = 'X'; break; case 2: schar[index++] = 'X'; schar[index++] = 'X'; break; case 3: schar[index++] = 'X'; schar[index++] = 'X'; schar[index++] = 'X'; break; case 4: schar[index++] = 'X'; schar[index++] = 'L'; break; case 5: schar[index++] = 'L'; break; case 6: schar[index++] = 'L'; schar[index++] = 'X'; break; case 7: schar[index++] = 'L'; schar[index++] = 'X'; schar[index++] = 'X'; break; case 8: schar[index++] = 'L'; schar[index++] = 'X'; schar[index++] = 'X'; schar[index++] = 'X'; break; case 9: schar[index++] = 'X'; schar[index++] = 'C'; break; } } if(num != 0) { count = num; switch(count) { case 1: schar[index++] = 'I'; break; case 2: schar[index++] = 'I'; schar[index++] = 'I'; break; case 3: schar[index++] = 'I'; schar[index++] = 'I'; schar[index++] = 'I'; break; case 4: schar[index++] = 'I'; schar[index++] = 'V'; break; case 5: schar[index++] = 'V'; break; case 6: schar[index++] = 'V'; schar[index++] = 'I'; break; case 7: schar[index++] = 'V'; schar[index++] = 'I'; schar[index++] = 'I'; break; case 8: schar[index++] = 'V'; schar[index++] = 'I'; schar[index++] = 'I'; schar[index++] = 'I'; break; case 9: schar[index++] = 'I'; schar[index++] = 'X'; break; default: break; } } schar[index] = '\0'; string s = schar; return s; } };