题目背景
小明这在写作业,其中有一道A+B Problem ,他想啊想啊想,就是想不出来,于是就找到了会编程的你......
题目描述
这里的 A+B 是很奇特的。它是按质数的顺序来进位的。例如:1,0+2,11,0+2,1 = 1,0,11,0,1
(用 ,, 来分隔每一位)。个位是 22 进制,十位是 33 进制,百位是 55 进制,千位是 77 进制,万位是 1111 进制……两个加数的最高位是万位(万位可能有两位)。
输入格式
输入一个形如 1,0+2,11,0+2,1 字符串 s。
输出格式
输出相加后的结果。
输入输出样例
输入 #1
1,0+2,1
输出 #1
1,0,1
#include<stdio.h>
int main()
{
char a[9]={0},b[9]={0},c[9]={0},i=0,j=0,k=0,book[9]={2,3,5,7,11,13,17,19,23};
scanf("%d",a+i++);
while((getchar())==',')
scanf("%d",a+i++);
scanf("%d",b+j++);
while((getchar())==',')
scanf("%d",b+j++);
i--,j--;
while(i>=0&&j>=0)
{
c[k++]=a[i--]+b[j--];
}
while(i>=0)c[k++]=a[i--];
while(j>=0)c[k++]=b[j--];
i=0;k--;
while(i<=k)
{
c[i+1]=c[i]/book[i]+c[i+1];
c[i]=c[i]%book[i];
i++;
}
if(c[i]==0)i--;
while(i>=0)
{
if(i) printf("%d,",c[i]);
else printf("%d",c[i]);
i--;
}
return 0;
}