高精度模板
来源:互联网 发布:js 将时分秒转换成数字 编辑:程序博客网 时间:2024/06/08 07:07
高精度GCD
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>using namespace std;void init(int num[]){ char s[10005]={0}; scanf("%s",s); num[0]=strlen(s); for(int i=1;i<=num[0];i++){ num[i]=s[num[0]-i]-'0'; }}void print(int num[]){ for(int i=num[0];i>=1;i--){ printf("%d",num[i]); } printf("\n");}int A[10005],B[10005],C[10005]={1,1},f[10]={1,2};int cmp(int a[],int b[]){ if(a[0]>b[0]) return 1; if(a[0]<b[0]) return -1; for(int i=a[0];i>=1;i--){ if(a[i]>b[i]) return 1; if(a[i]<b[i]) return -1; } return 0;}void jianfa(int a[],int b[]){ for(int i=1;i<=a[0];i++){ a[i]-=b[i]; if(a[i]<0){ a[i]+=10; a[i+1]--; } } a[0]++;//注意 for(int i=a[0];i>=1;i--){ if(!a[i]) a[0]=i; else break; } if(a[0]>=2) a[0]--;}void chengfa(int a[],int b[]){ int num[10005]={0}; memset(num,0,4*10005); for(int i=1;i<=a[0];i++){ for(int j=1;j<=b[0];j++){ num[i+j-1]+=a[i]*b[j]; } } for(int i=1;i<=a[0]+b[0];i++){ if(num[i]>=10){ num[i+1]+=num[i]/10; num[i]%=10; } } num[0]=a[0]+b[0]+1;//注意 for(int i=a[0]+b[0];i>=2;i--){ if(!num[i]) num[0]=i; else break; } num[0]--; memset(a,0,sizeof(0)); memcpy(a,num,4*num[0]+4);}void chu2(int num[]){ for(int i=num[0];i>=1;i--){ if(num[i]&1&&i>=2) num[i-1]+=10; num[i]/=2; if(i==num[0]&&num[i]==0&&num[0]!=1) num[0]--;//注意 }}void gcd(int a[],int b[],int c[]){ if(cmp(a,b)<0){ swap(a,b); } while(!(b[0]==1&&b[1]==0)){ if((b[1]&1)&&(a[1]&1)){ jianfa(a,b); } else if(!(b[1]&1)&&(a[1]&1)){ chu2(b); } else if((b[1]&1)&&!(a[1]&1)){ chu2(a); } else if(!(b[1]&1)&&!(a[1]&1)){ chu2(a);chu2(b); chengfa(c,f); } if(cmp(a,b)<0){ swap(a,b); } } chengfa(c,a);}int main(){ freopen("in.txt","r",stdin); init(A);init(B); gcd(A,B,C); print(C); fclose(stdin); return 0;}
阅读全文
0 0
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 高精度模板
- 【模板】高精度
- 高精度模板
- 高精度模板
- spark机器学习MLlib笔记(1)
- Android JobScheduler
- JS-变量,作用域和内存问题
- 程序猿的学习之路 新起点
- Android --- Extras(自定义类型传递对类型做序列化)
- 高精度模板
- Ubuntu16.04 anaconda pytorch-gpu环境
- 使用mongoDB pipeline进行聚合操作
- Linux网络编程--(8)进程间的套接字(域套接字)
- vue项目部署到生产环境(Tomcat为例)
- HDU-1256 画8(模拟)
- BZOJ3039 最大01子矩阵 单调栈
- 算法笔记 //09_最优服务次序问题
- 传统的JDBC开发(一)