• OpenJudge 2736 大整数减法 C++


    链接地址:http://bailian.openjudge.cn/practice/2736/

    题目:

    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述
    求2个大的正整数相减的差
    输入
    第1行是测试数据的组数n,每组测试数据占2行,第1行是被减数a,第2行是减数b(a > b)。每组测试数据之间有一个空行,每行数据不超过100个字符
    输出
    n行,每组测试数据有一行输出是相应的整数差
    样例输入
    2
    9999999999999999999999999999999999999
    9999999999999
    
    5409656775097850895687056798068970934546546575676768678435435345
    1
    样例输出
    9999999999999999999999990000000000000
    5409656775097850895687056798068970934546546575676768678435435344

    思路:

    套用大整数减法模板

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <string>
     4 using namespace std;
     5 
     6 string sub(string s1,string s2)
     7 {
     8     int flag = 0;
     9     if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2))
    10     {
    11         flag = 1;
    12         string temp=s1;
    13         s1=s2;
    14         s2=temp;
    15     }
    16 
    17 
    18     int i,j;
    19     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
    20     {
    21         s1[i]=char(s1[i]-(j>=0?s2[j]-'0':0));   //注意细节
    22         if(s1[i]-'0'<0)
    23         {
    24             s1[i]=char(s1[i] + 10);
    25             s1[i-1]--;
    26         }
    27     }
    28 
    29     for(i = 0; i < s1.length(); i++)
    30     {
    31         if(s1[i] != '0') break;
    32     }
    33     if(i == s1.length()) i = s1.length()-1;
    34     s1 = s1.substr(i);
    35 
    36     if(flag) s1 = "-" + s1;
    37 
    38     return s1;
    39 }
    40 
    41 int main()
    42 {
    43     int n;
    44     cin>>n;
    45     string str1,str2;
    46     while(n--)
    47     {
    48         cin>>str1>>str2;
    49         cout<<sub(str1,str2)<<endl;
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    移动端轮播图实现
    iterator
    Promise对象和运算符
    xshell报错:The remote SSH server rejected X11 forwarding request. Last login: Fri Dec 2
    linux平台运行jmeter
    linux基础命令
    APP登录之后会将PC的登录信息踢掉
    测试中遇到支付的一个小问题
    谷歌浏览器css不支持12px以下的
    spring setter注入
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3516927.html
Copyright © 2020-2023  润新知