2009-01-11 18:17:48來源不明

ACM 10035 Primary Arithmetic

可能會輸入0 1、1 0 所以要嚴格規定!!

/***********************************************************/

  1. #include<stdio.h>      
  2. #include<stdlib.h>   
  3. #include<string.h>   
  4. main()   
  5. {   
  6.  int time,temp,temp1,temp2,a,b,c,n,m;   
  7.     
  8.  while(scanf("%d %d",&n,&m)==2)   
  9.   {int x[15]={0},y[15]={0},ans[15]={0};   
  10.    if(n==0&&m==0)   
  11.     break;   
  12.    else  
  13.    {    
  14.    temp=0;temp1=0;temp2=0;   
  15.    while(n!=0)   
  16.     {   
  17.     x[temp1]=n%10;   
  18.     n=n/10;   
  19.     temp1++;   
  20.     }   
  21.    while(m!=0)   
  22.     {   
  23.     y[temp2]=m%10;   
  24.     m=m/10;   
  25.     temp2++;   
  26.     }   
  27.    for(a=0;a<15;a++)   
  28.     {   
  29.     ans[a]=x[a]+y[a];   
  30.     }   
  31.    for(a=0;a<15;a++)   
  32.     {   
  33.     time=0;   
  34.      while(ans[a]>=10)   
  35.       {   
  36.       time++;   
  37.       ans[a]=ans[a]-10;   
  38.       }   
  39.      ans[a+1]=ans[a+1]+time;   
  40.      if(time>=1)   
  41.       temp++;    
  42.     }   
  43.     if(temp==0)   
  44.      printf("No carry operation.\n");   
  45.     else if(temp>1)   
  46.      printf("%d carry operations.\n",temp);   
  47.     else  
  48.      printf("1 carry operation.\n");   
  49.    }   
  50.   }      
  51.  return 0;   
  52. }

/***********************************************************/

版本2:

  1. #include<stdio.h>   
  2. #include<stdlib.h>   
  3. #include<string.h>   
  4. main()   
  5. {   
  6.  char x[15],y[15];   
  7.  while(scanf("%s %s",x,y)==2)   
  8.   {   
  9.    if(strlen(x)==1&&x[0]==48&&strlen(y)==1&&y[0]==48)   
  10.     break;   
  11.    int ans[15]={0};   
  12.    int a,b,c,time=0;   
  13.    for(a=strlen(x)-1,b=0;a>=0;a--,b++)   
  14.     {   
  15.      ans[b]=x[a]-48;   
  16.     }   
  17.    for(a=strlen(y)-1,b=0;a>=0;a--,b++)   
  18.     ans[b]=ans[b]+y[a]-48;    
  19.    for(a=0;a<15;a++)    
  20.     {   
  21.      if(ans[a]>=10)   
  22.       {   
  23.        ans[a+1]=ans[a+1]+ans[a]/10;   
  24.        ans[a]=ans[a]%10;   
  25.        time++;   
  26.       }   
  27.     }   
  28.     if(time==0)         
  29.      printf("No carry operation.\n");         
  30.     else if(time>1)         
  31.      printf("%d carry operations.\n",time);         
  32.     else        
  33.      printf("1 carry operation.\n");   
  34.   }   
  35.  return 0;