大数减法

来源:互联网 发布:淘宝微淘达人v任务平台 编辑:程序博客网 时间:2024/04/29 08:20

大数减法

问题描述:

给你两个大数,输出,他们的差

输入:

输入n,有n组数,接下输入两个数

输出:

输出他们的差

输入样例:

3

88 5

2 999999999999

456786798787 4564564857921456645789789

输出样列:

83

-999999999997

-4564564857920999858991002

代码:

#include<iostream>  using namespace std;  string a,b;  string  substr(string a,string b )                          {   int  i,j,k,c,s,flag=1; string s1,s2;if(a.size()<b.size()||a.size()==b.size()&&a.compare(b)<0) { s1=a; a=b; b=s1; flag=0; }     while (a.length()-1>b.length()-1)  b='0'+b;               //字符短的加前导零,使他们一样长          for (i=a.length()-1; i>=0; i--)        //减,规整     {       if(a[i]>=b[i]) a[i]=a[i]-b[i];else {a[i]=a[i]-b[i];        c=(a[i]*(-1)/10)+1;a[i]=a[i]+c*10;a[i-1]=a[i-1]-c;}     }for(i=0;i<a.length();i++)       // 去零     if(a[i]=='0');    else break;    for(j=i,k=0;j<a.length();j++,k++)    //转化字符     a[k]=a[j]+48;   if(flag)   {    s2=a;   } else  { s2="-"; s2+=a; }  return s2;}  int main()  {  int cas;cin>>cas;while(cas--){ cin>>a;       cin>>b ;         cout<<substr(a,b)<<endl;       }   return 0;}  


 

原创粉丝点击