杭州電子科技大學1229題的糾結

題目:
Problem Description
讀入兩個小於10000的正整數A和B,計算A+B。需要注意的是:如果A和B的末尾K(不超過8)位數字相同,請直接輸出-1。
 

 
Input
測試輸入包含若干測試用例,每個測試用例佔一行,格式爲"A B K",相鄰兩數字有一個空格間隔。當A和B同時爲0時輸入結束,相應的結果不要輸出。
 

 
Output
對每個測試用例輸出1行,即A+B的值或者是-1。
 

 
Sample Input
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
 

 
Sample Output
3
-1
-1
100
我的代碼:
#include<iostream>
using namespace std;
int main(void)
{
 void accumulate(void);
 char num1[10000],num2[10000];
 int k,sum[10001];
 unsigned int index,sumindex;
 while(cin>>num1>>num2,num1!='\0'&&num2!='\0')
 {
  index=0;sumindex=0;
  memset(sum,0,sizeof(sum));
  cin>>k;
  for(index=strlen(num1)-1,sumindex=strlen(num2)-1;index>=strlen(num1)-k,sumindex>=strlen(num2)-k;index--,sumindex--)
  {
           if(num1[index]==num2[sumindex])
     {
      continue;
      if(index=strlen(num1)-k)
       cout<<"-1"<<endl;
     }
     else goto loop;
  }
    loop:void accumulate(void);
 }
}
void accumulate(void)
{
 char num1[10000],num2[10000];
 int k,sum[10001];
 unsigned int index,sumindex;
 for(index=strlen(num1)-1,sumindex=10000;index>=0;index--,sumindex--)
    sum[sumindex]=num1[index]-'\0';
         for(index=strlen(num2)-1,sumindex=10000;index>=0;index--,sumindex--)
    sum[sumindex]+=num2[index]-'\0';
   for(sumindex=10000;sumindex>=0;sumindex--)
   {
    if(sum[sumindex]>9)
    {
     sum[sumindex]%=10;
     sum[sumindex-1]+=sum[sumindex]/10;
    }
   }
         for(sumindex=0;sumindex<=10000;sumindex++)
   {
    if(sum[sumindex!=0])break;
   }
   if(sumindex==10001)
    sumindex=10000;
   sumindex=0;
   while(!sum[sumindex])sumindex++;
   for(;sumindex<10000;sumindex++)
    cout<<sum[sumindex];
   cout<<sum[10001]<<endl;
}
糾結的要命,高手指點。我的郵箱是[email protected]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章