• HDU 1002


    大水题

    为了心情好点去写的

    结果

    思路很明确

    过程有点曲折

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

    换成减法也许会难点

     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 }
  • 相关阅读:
    。Java中的一些小细节
    。标识符命名规则
    。tar.gz(bz或bz2等)安装
    。U盘安装CentOS6.5
    。linux桌面与命令行
    。鸟哥私房菜
    。i节点
    UGUI- 单列列表(VerticalLayoutGroup)
    PhotonServer(3)-连接服务器-客户端
    PhotonServer(2)-配置
  • 原文地址:https://www.cnblogs.com/Run-dream/p/3861472.html
Copyright © 2020-2023  润新知