内容目录
高精度 a+b
第i位的进制为第 ith 系数
慢慢做吧……
Important---:切记质数表一定要开大一些
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<cctype> #include<iostream> #include<functional> #include<algorithm> #include<sstream> using namespace std; int a[100],siz=0; char a1[1000],a2[1000]; int A[1000],B[1000],C[1000]; void stod() { istringstream ss(a1); int i=1; while (ss) { ss>>A[i]; i++; char c; if (ss) ss>>c; } A[0]=i-1; stringstream ss2; ss2<<a2; i=1; while (ss2) { ss2>>B[i]; i++; char c; if (ss2) ss2>>c; } B[0]=i-1; for (int i=1;i<=(A[0]>>1);i++) swap(A[i],A[A[0]-i+1]); for (int i=1;i<=(B[0]>>1);i++) swap(B[i],B[B[0]-i+1]); } int main() { for (int i=1;siz<=80;i++) { bool flag=0; for (int j=2;j<=i-1;j++) if (i%j==0) flag=1; if (!flag) { siz++; a[siz]=i; } } // for (int i=1;i<=25;i++) cout<<a[i]<<' '; while (scanf("%s%s",a1,a2)!=EOF) { memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); stod(); // for (int i=1;i<=B[0];i++) cout<<B[i]<<' '; memset(C,0,sizeof(C)); C[0]=max(A[0],B[0])+1; for (int i=1;i<=C[0];i++) { C[i]+=A[i]+B[i]; C[i+1]+=C[i]/a[i+1]; C[i]%=a[i+1]; } while (!C[C[0]]) C[0]--; for (int i=C[0];i>=2;i--) cout<<C[i]<<","; cout<<C[1]<<endl; } // while (1); return 0; }