大数相减
发布时间:2020-12-14 03:29:42 所属栏目:大数据 来源:网络整理
导读:大数相减主要考虑借位和借位出现的前导零以及负值问题。 #includestdio.h#includeiostream#includestring#includealgorithmusing namespace std;string posi_subtract(string st1,string st2) //结果为正值{ string finstr; reverse(st1.begin(),st1.end());
大数相减主要考虑借位和借位出现的前导零以及负值问题。 #include<stdio.h> #include<iostream> #include<string> #include<algorithm> using namespace std; string posi_subtract(string st1,string st2) //结果为正值 { string finstr; reverse(st1.begin(),st1.end()); reverse(st2.begin(),st2.end()); int in=0,num=0,len1=st1.size(),len2=st2.size(); for(int i=0; i<len2; i++) { st1[i]=st1[i]-'0'+in+'0'; if(st1[i]>=st2[i]) { in=0; st1[i]=(st1[i]-'0')-(st2[i]-'0')+'0'; } else { in=-1; st1[i]=st1[i]+':'-st2[i]; } } for(int j=len2; j<len1; j++) { st1[j]=st1[j]-'0'+in+'0'; if(st1[j]>='0') { in =0; } else { in=-1; st1[j]=st1[j]-'0'+10+'0'; } } reverse(st1.begin(),st1.end()); int i; for(i=0; i<len1-1; i++) //去除前导零 { if(st1[i]!='0') break; } for(int j=i; j<len1; j++) { finstr+=st1[j]; } return finstr; } string nega_subtract(string st1,string st2) //结果为负值 { string s; s=posi_subtract(st1,st2); reverse(s.begin(),s.end()); s+='-'; //尾部添加符号 reverse(s.begin(),s.end()); return s; } string subtraction(string st1,string st2) //相减函数 { if(st1.length()>st2.length()) //比较两个string的长度分三种情况 return posi_subtract(st1,st2); else if(st1.length()==st2.length()) { if(st1>st2) return posi_subtract(st1,st2); else if(st1<st2) return nega_subtract(st2,st1); else //st1==st2 return posi_subtract(st1,st2); } else if(st1.length()<st2.length()) { return nega_subtract(st2,st1); } } int main() { int t; cin>>t; while(t--) { string str1,str2; cin>>str1>>str2; cout<<subtraction(str1,str2)<<endl; } return 0; } 样例: 10 5162 1004620 -999458 5162 124620 -119458 5162 114620 -109458(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 用Laravel Sms实现laravel短信验证码的发送的实现
- How to read the environment variables in groovy email t
- 看我用汉语编程(汉语Visual Basic编程软件发布)
- Lua学习笔记之 Type and Values
- Delphi7 Webbrowser制作网页表单自动提交器按步分析(1)
- delphi dbgrid数据导出为exce l(2)
- delphi – 有人知道Graphics32的当前状态吗?
- delphi直接连SqlLite例子问题
- hdu1133 Buy the Ticket
- VB 6 / .NET互操作最近是否被Windows更新破坏了?