Problem Description
读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的;地球上的10进制数38,在火星上记为“1,1,1,0”,因为火星个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的……
Input
测试输入包含若干测试用例,每个测试用例占一行,包含两个火星正整数A和B,火星整数的相邻两位数用逗号分隔,A和B之间有一个空格间隔。当A或B为0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即火星表示法的A+B的值。
Sample Input
1,0 2,1
4,2,0 1,2,0
1 10,6,4,2,1
0 0
Sample Output
1,0,1
1,1,1,0
1,0,0,0,0,0
1 #include <cstdio> 2 int prime[30]={0}; 3 void init(void) 4 { 5 int i,j,n; 6 for(i=0,n=2;i<30;i++) 7 { 8 for(;;n++) 9 { 10 for(j=2;j<=n/2;j++) 11 { 12 if(n%j==0) 13 break; 14 } 15 if(j>n/2) 16 { 17 prime[i]=n++; 18 break; 19 } 20 } 21 } 22 } 23 int main() 24 { 25 char str[200]; 26 int i,j; 27 init(); 28 while(gets(str)!=NULL) //scanf不接受空格 29 { 30 int a[100]={0},b[100]={0},s[100]={0},n=0,la=0,lb=0; 31 for(i=0;;i++) 32 { 33 if(str[i]==',') 34 { 35 a[la++]=n; 36 i++; 37 n=0; 38 } 39 else if(str[i]==' ') 40 { 41 a[la++]=n; 42 for(i++,n=0;;i++) 43 { 44 if(str[i]=='