啥都不说直接上板子吧 QAQ
#include#include #include #include #include #include using namespace std;const int N=100100;int len;int c[N],a[N],b[N]; string s,s1;//高精加法 inline void add(int a[],int b[]) { int len=max(a[0],b[0]); for(int i=1;i<=len;++i) { c[i]=a[i]+b[i]+c[i]; if(c[i]>=10) { c[i]%=10; ++c[i+1]; } } if(c[len+1]!=0) len++;//最少有len位,最多有len+1位,判断一下有多少位 for(int i=len;i>=1;--i) printf("%d",c[i]); memset(c,0,sizeof len+10);//清空 }//高精减法inline void sub(int a[],int b[],bool vis) { int len=a[0]; for(int i=1;i<=len;++i) { if(a[i] 1))) len--; for(int i=len;i>=1;--i) printf("%d",c[i]);}inline void sub_(int a[],int b[]) { if(a[0]>b[0]) sub(a,b,0);//判断一下谁大谁小 if(a[0] b[len]) { sub(a,b,0); break; } if(a[len] 1) --len; for(int i=len;i>=1;--i) printf("%d",c[i]);}//预处理inline void init(string &x,int a[]) { a[0]=x.length();//string 应该是从string[0]开始存的吧 for(int i=0;i >s>>s1; init(s,a); init(s1,b); add(a,b);//a+b printf("\n"); mul(a,b);//a*b printf("\n"); sub_(a,b);//a-b printf("\n"); return 0;}