码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1002

时间:2014-07-22 23:31:28      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   

大水题

为了心情好点去写的

结果

思路很明确

过程有点曲折

超大数字的计算用字符串来解决

换成减法也许会难点

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int T;
 8     cin>>T;
 9     int t =T;
10 
11     while(T--)
12     {
13         string a,b,c,d;
14         cin>>a>>b;
15 
16         c = a;//之后要输出a,b
17         d = b;//先备份
18         int la = a.length();
19         int lb = b.length();
20 
21         if(la<lb)//简化问题把长短区分开来
22         {
23             string c = a;
24             a = b;
25             b = c;
26             la = a.length();
27             lb = b.length();
28         }
29 
30         char* result = new char[la+1];
31         result[0]= 0;
32         int dif = la-lb;
33         int index = la;
34         int add = 0;
35         for(int i = lb-1;i>-1;i--)//一直短的那些每位相加
36         {
37             if(b.at(i)+a.at(dif+i)+add<=0+9)
38             {
39                 result[index] = b.at(i)+a.at(dif+i)-0 +add;
40                 index--;
41                 add = 0;
42             }else
43             {
44                 result[index] = b.at(i)+a.at(dif+i)-0-10 +add;
45                 index--;
46                 add = 1;
47             }
48         }
49         if(la==lb)//等长时的考虑
50         {
51             if(a.at(0)+b.at(0)>0+9)
52             {
53                 result[0]=1;
54             }
55         }else{
56         for(int i = dif-1;i>-1;i--)
57         {
58             if(a.at(i)+add<=9)
59             {
60                 result[index] = a.at(i)+add;
61                 index--;
62                 add =0;
63             }else
64             {
65                 result[index] = a.at(i)+add-10;
66                 index--;
67                 add = 1;
68             }
69         }
70         }
71         cout<<"Case "<<t-T<<":"<<endl;
72         cout<<c<<" "<<"+"<<" "<<d<<" = ";
73 
74         if(result[0]!=0)
75         {
76             cout<<result[0];
77         }
78        for(int i =1;i<=la;i++)
79        {
80            cout<<result[i];
81        }
82        cout<<endl;
83        if(T!=0)
84        {
85         cout<<endl;
86        }
87     }
88 
89 }

HDU 1002,布布扣,bubuko.com

HDU 1002

标签:style   blog   color   os   io   for   

原文地址:http://www.cnblogs.com/Run-dream/p/3861472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!