#include <stdio.h>
#include <string.h>
char str1[100], str2[100];
int dst1[100], dst2[100];
int prim[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113};
int max(int a, int b)
{
if(a >= b) return a;
else return b;
}
int main ()
{
int i;
while(scanf("%s %s", str1, str2) != EOF)
{
if(str1[0] == '0' && str1[1] == '\0' || str2[0] == '0' && str2[1] == '\0') break;
int len1 = strlen(str1);
int len2 = strlen(str2);
i = len1 - 1; len1 = 0;
for(; i >= 0; i --)
{
int t = 1, sum = 0;
while(str1[i] != ',' && i >= 0)
{
sum += (str1[i] - '0') * t;
t *= 10;
i --;
}
dst1[len1 ++] = sum;
}
int sum = 0;
for(i = 0; i < len1; i ++)
{
sum += dst1[i];
}
if(sum == 0) break;
i = len2 - 1; len2 = 0;
for(; i >= 0; i --)
{
int t = 1, sum = 0;
while(str2[i] != ',' && i >= 0)
{
sum += (str2[i] - '0') * t;
t *= 10;
i --;
}
dst2[len2 ++] = sum;
}
sum = 0;
for(i = 0; i < len2; i ++)
{
sum += dst2[i];
}
if(sum == 0) break;
if(len1 > len2)
{
for(i = len2; i < len1; i ++)
dst2[i] = 0;
}
else if(len2 > len1)
{
for(i = len1; i < len2; i ++)
dst1[i] = 0;
}
len1 = max(len1, len2);
int count = 0;
for(i = 0; i < len1; i ++)
{
dst1[i] += dst2[i] + count;
if(dst1[i] >= prim[i])
{
dst1[i] -= prim[i];
count = 1;
}
else
{
count = 0;
}
}
if(count == 1)
{
dst1[len1 ++] = 1;
}
for(i = len1 - 1; i >= 0; i --)
{
if(i != 0) printf("%d,", dst1[i]);
else printf("%d\n", dst1[i]);
}
}
return 0;
}
2006年浙大复试上机题火星A+B
最新推荐文章于 2020-06-26 13:01:05 发布