Ac日记——大整数减法 openjudge 1.6 11
2016-12-04 17:00
507 查看
11:大整数减法
总时间限制: 1000ms 内存限制: 65536kB描述求两个大的正整数相减的差。
输入共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。输出一行,即所求的差。样例输入
9999999999999999999999999999999999999 9999999999999
样例输出
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 10
- AC日记——大整数的因子 openjudge 1.6 13
- AC日记——潜伏着 openjudge 1.7 11
- AC日记——计算2的N次方 openjudge 1.6 12
- AC日记——有趣的跳跃 openjudge 1.6 07
- AC日记——石头剪刀布 openjudge 1.6 08
- AC日记——求10000以内n的阶乘 openjudge 1.6 14
- AC日记——向量点积计算 openjudge 1.6 09
- AC日记——阶乘和 openjudge 1.6 15
- AC日记——字符替换 openjudge 1.7 08
- AC日记——矩阵交换行 openjudge 1.8 01
- 25.求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。AC
- 11:大整数减法
- 11:大整数减法
- 百练2736/noi 11:大整数减法
- AC日记——紧急措施 openjudge 1.7 22
- AC日记——密码翻译 openjudge 1.7 09
- AC日记——忽略大小写的字符串比较 openjudge 1.7 16
- 11:大整数减法
- AC日记——单词的长度 openjudge 1.7 24