题目:http://ac.jobdu.com/problem.php?pid=1016
有0,0,1
0,0,1 这种情况,开始没注意,结果Runtimeerror,在杭电上直接就WA,晕——
#include<algorithm>
#include <stdio.h>
#include <math.h>
#include<string.h>
using namespace std;
char a[600],b[600];
int as[600],bs[600],cs[600];
int prime[300];
int i,j;
void calprime(){
int flag;
int cont = 0;
for(i =2;i < 200;i++){
flag = 1;
for(j =2; j < i;j++)
if(i%j==0){
flag = 0;
break;
}
if(flag)
prime[cont++] = i;
}
}
int main(){
while(~scanf("%s%s",a,b)){
if(!strcmp(a,"0")||!strcmp(b,"0"))//有0,0,1 0,0,1这种情况
break;
calprime();
memset(as,0,sizeof(as));
memset(bs,0,sizeof(bs));
memset(cs,0,sizeof(cs));
int t,t1 =0,t2 =0;
for(i =0;i < strlen(a); i++){
if(a[i]>= '0'&& a[i]<= '9')
as[t1] = 10*as[t1] + a[i] -'0';
else if(a[i] ==','){
t1++;
continue;
}
}
for(i =0;i < strlen(b); i++){
if(b[i]>= '0'&& b[i]<= '9')
bs[t2] = 10*bs[t2] + b[i] -'0';
else if(b[i] ==','){
t2++;
continue;
}
}
for(i =t1;i >=0; i--)
cs[t1-i] += as[i];
for(i =t2;i >=0; i--)
cs[t2-i] += bs[i];
t = max(t1,t2);
int s =0;
for(i =0; i <= t; i++){
s =cs[i]/prime[i];
cs[i] = cs[i]%prime[i];
cs[i+1] +=s;
}
if(cs[t+1])
t++;
for(i =t; i >=0; i--){
if(i)
printf("%d,",cs[i]);
else
printf("%d\n",cs[i]);
}
}
return 0;
}