两个很大的数相乘
2015-10-01 11:29
316 查看
#include <iostream> #include<string.h> #include<stdlib.h> #include<stdio.h> using namespace std; const int maxN=200; char s1[maxN],s2[maxN]; int a[maxN],b[maxN]; int **ans=new int*[maxN]; int ret[2*(maxN+1)]; int main() { int len1,len2,i,j,k,k1,k2,num,sum,over; while(scanf("%s%s",s1,s2)!=EOF) { len1=strlen(s1); len2=strlen(s2); k1=0; for(i=len1-1; i>=0; i-=4) { sum=0; for(j=i; j>i-4&&j>=0; j--) { num=s1[j]-'0'; for(k=i-j; k>0; k--) num*=10; sum+=num; } a[k1++]=sum; } k2=0; for(i=len2-1; i>=0; i-=4) { sum=0; for(j=i; j>i-4&&j>=0; j--) { num=s2[j]-'0'; for(k=i-j; k>0; k--) num*=10; sum+=num; } b[k2++]=sum; } /* for(i=k1-1; i>=0; i--) cout<<a[i]<<" "; cout<<endl; for(i=k2-1; i>=0; i--) cout<<b[i]<<" "; cout<<endl; */ for(i=0; i<maxN; i++) { ans[i]=new int[2*(maxN+1)]; memset(ans[i],0,sizeof(int)*2*(maxN+1)); } for(i=0; i<k1; i++) { over=0; k=i;//expansion 10^(4*i) for(j=0; j<k2; j++,k++) { ans[i][k]=a[i]*b[j]+over; over=ans[i][k]/10000; ans[i][k]%=10000; } if(over) ans[i][k]=over; } /* for(i=0; i<k1; i++) { for(j=2*(maxN+1)-1; j>=0; j--) if(ans[i][j]) break; if(j==-1) { printf("0\n"); continue; } printf("i= %d , j= %d , ans[i][j] = %d\n",i,j,ans[i][j]); for(j-=1; j>=0; j--) printf("%04d",ans[i][j]); printf("\n"); } */ memset(ret,0,sizeof(ret)); for(i=0; i<k1; i++) { over=0; for(j=0; j<2*(maxN+1); j++) { ret[j]+=ans[i][j]+over; over=ret[j]/10000; ret[j]%=10000; } } for(i=2*(maxN+1)-1; i>=0; i--) if(ret[i]) break; if(i==-1) { printf("0\n"); continue; } printf("%d",ret[i]); for(i-=1; i>=0; i--) { printf("%04d",ret[i]); } printf("\n"); } return 0; }
相关文章推荐
- 网站白名单过滤Java代码
- Quartz2D绘图<四>图形填充
- 【UML】行为图(状态图&活动图)
- USACO 2.2 Preface Numbering (模拟)
- java-design- flyweight
- 我的博客地址
- 黑马程序员——Java语言多线程
- Operating System: Three Easy Pieces --- Process (Note)
- MySQL的一些常用的SQL语句整理
- MySQL的一些常用的SQL语句整理
- 乘积最大子序列
- BZOJ 3368 约翰看山(扫描)O(N)
- mongodb基本指令
- 2015年下半年真题强化班二:软考办出题全部来自于指定教程一句话,而不是培训讲义
- hdu 5476 Explore Track of Point(几何)
- c# HttpWebRequest 代码手动设置cookies的简单办法
- 深入理解C++三大特性之一 ——多态
- 函数进阶
- 伸展树模板
- 枚举与define的区别