标签:
1,0 2,1 4,2,0 1,2,0 1 10,6,4,2,1 0 0
1,0,1 1,1,1,0 1,0,0,0,0,0
#include <stdio.h> #include <stdlib.h> #include <string.h> char x[10000],y[10000]; int prime(int a[],int n)/*n素数范围*/ { int i,j,k,x,num,b[(n+1)*2]; n++; n/=2; a[0]=2; a[1]=3; num=2; for(i=1; i<=2*n; i++) b[i]=0; for(i=3; i<=n; i+=3) for(j=0; j<2; j++) { x=2*(i+j)-1; while(b[x]==0) { a[num++]=x; for(k=x; k<=2*n; k+=x) b[k]=1; } } return num;/*素数个数*/ } int main() { int a[10000],l,l1,l2,sum1[10000],sum2[10000],sum3[10000],x1,y1,p,i,f,j,jw,jh; l=prime(a,100000); while(1) { scanf(" %s %s",x,y); l1=strlen(x); l2=strlen(y); if(l1==l2&&l1==1&&x[0]==‘0‘&&y[0]==‘0‘) break; x[l1]=‘,‘; y[l2]=‘,‘; x1=0; p=0; for(i=0; i<=l1; i++) { if(x[i]==‘,‘) { sum1[x1++]=p; p=0; } else p=p*10+(x[i]-‘0‘); } y1=0; p=0; for(i=0; i<=l2; i++) { if(y[i]==‘,‘) { sum2[y1++]=p; p=0; } else p=p*10+(y[i]-‘0‘); } for(i=0; i<=(x1-1)/2; i++) { jh=sum1[i]; sum1[i]=sum1[x1-1-i]; sum1[x1-1-i]=jh; } for(i=0; i<=(y1-1)/2; i++) { jh=sum2[i]; sum2[i]=sum2[y1-1-i]; sum2[y1-1-i]=jh; } /*for(i=0; i<x1; i++) printf("!%d ",sum1[i]); printf("\n"); for(i=0; i<y1; i++) printf("@%d ",sum2[i]); printf("\n");*/ f=0; jw=0; for(i=0;i<x1&&i<y1;i++) { if(sum1[i]+sum2[i]+jw>=a[f]) { sum3[f]=sum1[i]+sum2[i]+jw-a[f]; jw=1; f++; } else { sum3[f]=sum1[i]+sum2[i]+jw; f++; jw=0; } } if(i!=x1) { for(; i<=x1; i++) { if(i==x1) { if(jw==1) { sum3[f++]=1; } break; } if(sum1[i]+jw>=a[f]) { sum3[f]=sum1[i]+jw-a[f]; jw=1; f++; } else { sum3[f]=sum1[i]+jw; f++; jw=0; } } } else if(i!=y1) { for(; i<=y1; i++) { if(i==y1) { if(jw==1) { sum3[f++]=1; } break; } if(sum2[i]+jw>=a[f]) { sum3[f]=sum2[i]+jw-a[f]; jw=1; f++; } else { sum3[f]=sum2[i]+jw; f++; jw=0; } } } else if(jw==1) { sum3[f++]=1; } for(i=f-1;i>0; i--) printf("%d,",sum3[i]); printf("%d\n",sum3[0]); } return 0; }
标签:
原文地址:http://www.cnblogs.com/Qiao994255978/p/4477259.html