高精度(大整数减法)
2010-07-15 16:02
405 查看
]#include <iostream> #include <cstring> using namespace std; #define M 250 int a[M]; int b[M]; char a1[M]; char b1[M]; int i,la,lb; void init(); bool judge(); void output(); void outputn(); int main() { init(); int n,k; cin>>n; for(k=0;k<n;k++) { cin>>a1>>b1; la=strlen(a1);lb=strlen(b1); for(i=0; i<la; i++) a[i] = a1[la-i-1]-'0'; for(i=0; i<lb; i++) b[i] = b1[lb-i-1]-'0'; if(judge()) { for(i=0;i<la;i++) { if(a[i] < b[i]) { a[i+1]--; a[i]+=10; } a[i] = a[i] - b[i]; } output(); } else { for(i=0;i<lb;i++) { if(b[i] < a[i]) { b[i+1]--; b[i]+=10; } b[i] = b[i] - a[i]; } outputn(); } init(); } return 0; } void init() { memset(a1,NULL,sizeof(a1)); memset(b1,NULL,sizeof(b1)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); i = la = lb = 0; } bool judge() { if(la>lb) { return 1; } else if(la<lb) { return 0; } else { for (i=0;i<la;i++) { if(a[i] > b[i]) { return 1; } else if (a[i] < b[i]) { return 0; } } if(i == la) { return 1; } } } void output() { while(!a[la-1]) { la--; if(!la) { printf("0"); break; } } for(i=la-1; i>=0; i--) printf("%d",a[i]); printf("/n"); } void outputn() { while(!b[lb-1]) { lb--; if(!lb) { printf("0"); break; } } printf("-"); for(i=lb-1;i>=0;i--) printf("%d",b[i]); printf("/n"); }
相关文章推荐
- 大整数减法(高精度)
- 整数高精度运算的库(加法,减法,乘法,除法,取模)
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- [原创]10^9进制高精度大整数减法(MMX版本)
- 大整数减法 (与后来做的高精度减法不同是用了容器)
- 2010年华为上机笔试二(高精度整数加法)
- 关于C语言实现大整数减法的修正
- 任意长度的高精度大整数加法
- 华为上机题:高精度整数加法
- CODEVS 3123 高精度练习之超大整数乘法
- [编程题]无线OSS-高精度整数加法
- POJ 2635 The Embarrassed Cryptographer (大整数求模/高精度求模 + 同余模定理 +素数打表)
- 【BZOJ1263】【SCOI2006】整数划分 高精度+构造
- 大整数减法
- 高精度-codevs-3115高精度练习之减法
- 大整数的乘法、加法、减法
- 11:大整数减法
- POJ 1503(高精度整数加法) 解题报告
- 整数高精度计算
- 高精度大整数模板(n!为例)