天天看點

程式設計挑戰賽之 二十進制數的加法

程式設計挑戰賽之 二十進制數的加法
程式設計挑戰賽之 二十進制數的加法

上面是題目要求以及界面

題目并不難,一般多調試幾遍都可以做出來

算是對我C++能力的入門級檢測吧

自己做的幾個測試案例都可以過

送出上去不行,可能是代碼格式不對

實在不了解calcute("Test","Test")和return"Test"是什麼意思

百度了代碼格式也沒有搜到

下午在認真找一下吧

比較惡心的事題目隻能送出一次。。。

貼上我的代碼:

#include <stdio.h>
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
using namespace std;
class Test {
public:
    static string calculate (string   x,string   y)
    {
     int i = x.size();
     int j = y.size();
     int k = (i>j?i:j)+1;
     vector<int> res(k,0);
     int flag = 0;
     k=0,i--,j--;
     while(i>=0 && j>=0){
      if(isalpha(x[i]))
       res[k] += x[i]-'a'+10;
      else res[k] += x[i]-'0';
      if(isalpha(y[j]))
       res[k] += y[j]-'a'+10;
      else res[k] += y[j]-'0';
      if(res[k] > 19)
       res[k+1]++,res[k] -= 20;
      i--;
      j--;
      k++;
     }
     while(i>=0){
      if(isalpha(x[i]))
       res[k] += x[i]-'a'+10;
      else res[k] += x[i]-'0';
      if(res[k] > 19)
       res[k]-=20,res[k+1]++;
      k++;
      i--;
     }
     while(j>=0){
      if(isalpha(y[j]))
       res[k++] += y[j--]-'a'+10;
      else res[k++] += y[j--]-'0';
      if(res[k] > 19)
       res[k]-=20,res[k+1]++;
      k++;
      j--;
     }
     vector<int>::iterator it = res.end()-1;
     if(*it != 0)
      cout << *it;
     for(vector<int>::iterator it=res.end()-2;
        it>=res.begin(); it--)
      if(*it > 9)
       cout << char(*it-10+'a');
      else cout << *it;
        return "Test";
    }
};
//start 提示:自動閱卷起始唯一辨別,請勿删除或增加。
int main()
{
    string x, y;
    while(cin >> x >> y)
     calculate(x,y);
    cout<<Test::calculate("Test","Test")<<endl;   
} 
//end //提示:自動閱卷結束唯一辨別,請勿删除或增加。