高精度算法
2016-06-10 14:16
288 查看
加法
减法
乘法
#include<stdio.h> #include<string.h> int la,lb,i,j=0,lm,n; char a[501],b[501],c[502]; int main() { gets(a); gets(b); la=strlen(a); lb=strlen(b); lm=la>lb?la:lb; for(i=1;i<=lm;i++) { n=j; if (i<=la) n+=a[la-i]-'0'; if (i<=lb) n+=b[lb-i]-'0'; j=n/10; n=n%10; c[i-1]=n+'0'; } if (j==1) { c[lm]='1'; lm++; } c[lm]='\0'; for(i=lm-1;i>=0;i--) printf("%c",c[i]); return 0; }
减法
#include<stdio.h> #include<string.h> char a[101],b[101],c[101],d[101],e[101]; int i,la,lb,n,t; int main() { gets(c); gets(d); if (strcmp(c,d)==0) { printf("0"); return 0; } la=strlen(c); lb=strlen(d); if (la>lb||(la==lb&&strcmp(c,d)>0)) { strcpy(a,c); strcpy(b,d); } else { printf("-"); strcpy(a,d); strcpy(b,c); } la=strlen(a); lb=strlen(b); t=0; for(i=1;i<=la;i++) { n=a[la-i]-48; n=n-t; if (lb>=i) n=n-b[lb-i]+48; if (n<0) { n+=10; t=1; } else t=0; e[i-1]=n+48; } while(e[la-1]=='0') la--; for(i=la-1;i>=0;i--) printf("%c",e[i]); return 0; }
乘法
#include<stdio.h> #include<string.h> char a1[50001],b1[50001]; int a[50001],b[50001],i,x,len,j,c[50001]; int main () { gets(a1); gets(b1); a[0]=strlen(a1);b[0]=strlen(b1); for (i=1;i<=a[0];++i)a[i]=a1[a[0]-i]-'0'; for (i=1;i<=b[0];++i)b[i]=b1[b[0]-i]-'0'; for (i=1;i<=a[0];++i)for (j=1;j<=b[0];++j)c[i+j-1]+=a[i]*b[j]; len=a[0]+b[0]; for (i=1;i<len;++i)if (c[i]>9){c[i+1]+=c[i]/10;c[i]%=10;} while (c[len]==0&&len>1)len--; for (i=len;i>=1;--i)printf("%d",c[i]); return 0; }
相关文章推荐
- [字符串]FJSDFZOJ 1134 整数去位
- 贴一个高精加= =纪念某道有毒的题
- Codevs P1654方程的解
- TYVJ P1375 山洞历险
- 最优分解方案
- 方程的解
- 【递推】wikioi 1509 拯救LongMM
- 【容斥原理】wikioi 1778 统计公共子序列个数
- 【高精】wikioi 1087 麦森数 (noip2003)
- 高精度计算(一)概念
- 【洛谷 1255】 数楼梯
- 【cf23E】Tree
- 模拟高精~*w*~
- BZOJ1002 [FJOI2007]轮状病毒
- noip2007 T3 矩阵取数(动归+操作符重载处理高精)
- 陶哲轩实分析 4.4 节习题试解
- Java多线程基础知识疑难点
- 陶哲轩实分析 4.4 节习题试解
- 鼓捣RxAndroid--介绍 学习响应式编程的简单方法
- 通过sqli-labs学习sql注入——进阶挑战之less23-28a