2009-01-11 18:17:48來源不明
ACM 10035 Primary Arithmetic
可能會輸入0 1、1 0 所以要嚴格規定!!
/***********************************************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- main()
- {
- int time,temp,temp1,temp2,a,b,c,n,m;
- while(scanf("%d %d",&n,&m)==2)
- {int x[15]={0},y[15]={0},ans[15]={0};
- if(n==0&&m==0)
- break;
- else
- {
- temp=0;temp1=0;temp2=0;
- while(n!=0)
- {
- x[temp1]=n%10;
- n=n/10;
- temp1++;
- }
- while(m!=0)
- {
- y[temp2]=m%10;
- m=m/10;
- temp2++;
- }
- for(a=0;a<15;a++)
- {
- ans[a]=x[a]+y[a];
- }
- for(a=0;a<15;a++)
- {
- time=0;
- while(ans[a]>=10)
- {
- time++;
- ans[a]=ans[a]-10;
- }
- ans[a+1]=ans[a+1]+time;
- if(time>=1)
- temp++;
- }
- if(temp==0)
- printf("No carry operation.\n");
- else if(temp>1)
- printf("%d carry operations.\n",temp);
- else
- printf("1 carry operation.\n");
- }
- }
- return 0;
- }
/***********************************************************/
版本2:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- main()
- {
- char x[15],y[15];
- while(scanf("%s %s",x,y)==2)
- {
- if(strlen(x)==1&&x[0]==48&&strlen(y)==1&&y[0]==48)
- break;
- int ans[15]={0};
- int a,b,c,time=0;
- for(a=strlen(x)-1,b=0;a>=0;a--,b++)
- {
- ans[b]=x[a]-48;
- }
- for(a=strlen(y)-1,b=0;a>=0;a--,b++)
- ans[b]=ans[b]+y[a]-48;
- for(a=0;a<15;a++)
- {
- if(ans[a]>=10)
- {
- ans[a+1]=ans[a+1]+ans[a]/10;
- ans[a]=ans[a]%10;
- time++;
- }
- }
- if(time==0)
- printf("No carry operation.\n");
- else if(time>1)
- printf("%d carry operations.\n",time);
- else
- printf("1 carry operation.\n");
- }
- return 0;
- }