24h購物| | PChome| 登入
2009-01-11 18:17:48| 人氣3,035| 回應0 | 上一篇 | 下一篇

ACM 10035 Primary Arithmetic

推薦 0 收藏 0 轉貼0 訂閱站台

可能會輸入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;   

台長: 來源不明
人氣(3,035) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10008 What's Cryptanalysis
此分類上一篇:ACM 424 Integer Inquiry

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文