首页 > 代码库 > Ac日记——大整数减法 openjudge 1.6 11
Ac日记——大整数减法 openjudge 1.6 11
11:大整数减法
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
求两个大的正整数相减的差。
- 输入
- 共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
- 输出
- 一行,即所求的差。
- 样例输入
99999999999999999999999999999999999999999999999999
- 样例输出
9999999999999999999999990000000000000
思路:
模拟;
来,上代码:
#include<set>#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<string>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;char s1[221],s2[221];void exchange(){ int l=0,r=strlen(s1)-1; while(r>l) { if(s1[l]>=‘0‘) s1[l]-=‘0‘; if(s1[r]>=‘0‘) s1[r]-=‘0‘; swap(s1[l],s1[r]); l++,r--; } if(l==r) s1[l]-=‘0‘; l=0,r=strlen(s2)-1; while(r>l) { if(s2[l]>=‘0‘) s2[l]-=‘0‘; if(s2[r]>=‘0‘) s2[r]-=‘0‘; swap(s2[l],s2[r]); l++,r--; } if(l==r) s2[l]-=‘0‘;}int main(){ cin>>s1; cin>>s2; exchange(); //cout<<s1<<endl<<s2<<endl; for(int i=0;i<=219;i++) { if(s1[i]-s2[i]<0) s1[i+1]--,s1[i]+=10; s1[i]-=s2[i]; } bool if_zero=true; for(int i=219;i>=0;i--) { if(s1[i]==0) continue; if_zero=false; for(int j=i;j>=0;j--) putchar(s1[j]+‘0‘); break; } if(if_zero) putchar(‘0‘); return 0;}
Ac日记——大整数减法 openjudge 1.6 11
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。