无聊写的压位高精加
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<algorithm> 6 #define MAXN 50001 7 const int p=8;//要压的位数 8 const int mod=1e8;//10的p次方 9 using namespace std; 10 int a[MAXN],b[MAXN],c[MAXN],l1,l2,len,cnt1,cnt2; 11 char s1[MAXN],s2[MAXN]; 12 inline int chuli(char s[],int n[]) { 13 char t[MAXN];//记录每p位的数 14 int len=strlen(s+1),cur=0; 15 while(len/p) { 16 strncpy(t,s+len-p+1,p);//从后截取p位 17 n[++cur]=atoi(t);//char转int 18 len-=p; 19 } 20 if(len) { 21 memset(t,0,sizeof t); 22 strncpy(t,s+1,len); 23 n[++cur]=atoi(t); 24 } 25 return cur; 26 } 27 inline void pluss() { 28 len=max(cnt1,cnt2)+1; 29 for(int i=1;i<=len;i++) { 30 c[i]+=a[i]+b[i]; 31 c[i+1]=c[i]/mod; 32 c[i]%=mod; 33 } 34 while(len>0&&!c[len]) len--; 35 } 36 inline void print() { 37 printf("%d",c[len]); 38 for(int i=len-1;i>=1;i--) printf("%0*d",p,c[i]);//不足p位补0 39 printf("\n"); 40 } 41 int main() { 42 scanf("%s%s",s1+1,s2+1); 43 cnt1=chuli(s1,a);cnt2=chuli(s2,b); 44 pluss(); 45 print(); 46 return 0; 47 }
作者:乌鸦坐飞机
出处:http://www.cnblogs.com/whistle13326/
新的风暴已经出现
怎么能够停止不前
穿越时空 竭尽全力
我会来到你身边
微笑面对危险
梦想成真不会遥远
鼓起勇气 坚定向前
奇迹一定会出现