记录一下自己的刷OJ 的历程,备战下一次的CCF

HDU1002  A + B Problem II

 需要注意的点:

1.输入数字的开头0要删除

2.最后的进位

3.最后一个输出没有空行

 1 #include <iostream>
 2 #include <stack>
 3 #include <string>
 4 #include <cstring>
 5 using namespace std;
 6 int main(){
 7     //freopen("in.txt","r",stdin);
 8     int T;
 9     cin>>T;
10     string s1,s2;
11     int num = 0;
12     while(T--){
13         cin>>s1>>s2;
14         s1.erase(0,s1.find_first_not_of("0"));
15         s2.erase(0,s2.find_first_not_of("0"));
16         if(s1.size()==0) s1="0";//如果输入为"000",变成"0" 
17         if(s2.size()==0) s2="0";
18         cout<<"Case "<<++num<<":"<<endl;
19         cout<<s1<<" + "<<s2<<" = ";
20         int i = s1.length()-1,j = s2.length()-1;
21         stack<int> result;
22         int flag = 0;
23         while(i>=0&&j>=0){
24             int a = s1[i--]-'0';
25             int b = s2[j--]-'0';
26             int c;
27             c = a+b+flag;
28             if(c>=10){
29                 c = c - 10;
30                 flag = 1;
31             }
32             else{
33                 flag = 0;
34             }
35             result.push(c);
36         }
37         while(i>=0){
38             int p = s1[i--]-'0';
39             int q = p+flag;
40             if(q>=10){
41                 flag = 1;
42                 q = q -10;
43             }else{
44                 flag = 0;
45             }
46             result.push(q);
47         }
48         while(j>=0){
49             int p = s2[j--]-'0';
50             int q = p+flag;
51             if(q>=10){
52                 flag = 1;
53                 q = q -10;
54             }else{
55                 flag = 0;
56             }
57             result.push(q);
58         }
59         if(flag==1){//最后的进位 
60             result.push(1);
61         }
62         while(!result.empty()){
63             cout<<result.top();//输出结果 
64             result.pop();
65         }
66         cout<<endl;
67         if(T)cout<<endl;//最后一行没有换行 
68     }
69     return 0;
70 }

 

posted @ 2019-09-16 11:01  清谗  阅读(583)  评论(0编辑  收藏  举报