A-B 练习【大数减法举例】
2013-10-28 21:11
197 查看
A-B
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^题目描述
题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2102每读入两个整数,输出其差。
输入
输入数据含有不超过50个的整数对,每个整数和每对整数的运算结果都不会超过±2^31。输出
对于每次读入的一对整数,输出前者减去后者的差。每个结果应以回车结束。示例输入
1 3 5 7
示例输出
-2 -2
提示
很明显,这是一道在整型范围内的减法运算,但是网上也找不到有关大数减法的题目,用这道题目抛砖引玉,也勉强凑合~代码:
#include<iostream> #include<string.h> #include<stdlib.h> using namespace std; int main() { char f1[110],g1[110]; while(cin>>f1>>g1) { int f[110]={0},g[110]={0}; int i,j; int t=strlen(f1),s=strlen(g1); for(i=t-1,j=0;i>=0;i--,j++) f[j]=f1[i]-'0'; for(i=s-1,j=0;i>=0;i--,j++) g[j]=g1[i]-'0'; int sum[110]={0},flag=0; int up=0; if((t==s&&strcmp(f1,g1)>=0)||t>s)//此处的if else 是大数减法的核心代码 { for(i=0;i<=105;i++) { if(f[i]>=g[i]) sum[i]=f[i]-g[i]; else { sum[i]=f[i]-g[i]+10; f[i+1]--; } } } else { flag=1; for(i=0;i<=105;i++) { if(g[i]>=f[i]) sum[i]=g[i]-f[i]; else { sum[i]=g[i]-f[i]+10; g[i+1]--; } } } if(strcmp(f1,g1)==0) { cout<<"0"<<endl; continue; } if(flag==1) cout<<"-"; for(i=105;i>=0;i--) if(sum[i]!=0) { while(i>=0) { cout<<sum[i]; i--; } break; } cout<<endl; } return 0; }
View Code
相关文章推荐
- C/C++编程小练习 大数减法之浮点大数减法算法
- 大数减法
- 大数的减法
- 高精度-codevs-3115高精度练习之减法
- 高精度--大数减法 luogu 2142
- Java大数模板——加法、减法、乘法、除法、开方、求余
- 北邮OJ 2 大数减法
- 高精度练习之减法
- 大数减法
- 使用C++类实现大数加法,大数减法,大数乘法
- 【ACM】ACM练习——大数运算求高精度幂
- linux下练习 c++ 库函数排序使用举例
- 大数加法.减法.乘法.除法
- nyoj 差值 1233 (大数减法&&字符串排序)
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
- 大数减法
- codevs 3115 高精度练习之减法 swap
- 【CODEVS3115】高精度练习之减法
- 大数的加法,减法,乘法
- 大数加法、减法和乘法