设为首页 加入收藏

TOP

uva 10106 Product(高精度大数乘法)
2015-11-21 01:01:02 来源: 作者: 【 】 浏览:1
Tags:uva 10106 Product 高精度 大数 乘法

昨天刚写了个大数加法,今天又来了个大数乘法,其实解法差不多,只不过换成了好多个大数的相加而

已,看别人的算法其实跟我的也差不多,都是这个姿势。wa了一次,竟然忘了考虑0的情况,以后交题之前,都要判

断一下边缘数据,大数据和小数据,要不就是白白被扣时间啊,另外还要注意的是变量不要重复定义!!!除非在调用函数里,要不很容易出错的!!!

?

#include
  
   
#include
   
     #include
    
      #include
     
       using namespace std; char a[300];//存放输入的第一组数据 char b[300];// 存放输入的第二组数据 int c[600];//存放每一位数与另一组数据相乘后的结果 int d[600];//用来保存已经计算过的每一位数与b相乘之后的和 void solve(char c[])//将输入的数据翻转 { char t; int len=strlen(c); for(int i=0; i<=(len-1)/2; i++) { t=c[i]; c[i]=c[len-1-i]; c[len-1-i]=t; } } int main() { int i,j,x,k,q,up,up1,max1; while(scanf("%s%s",a,b)!=EOF) { if(strcmp(a,"0")==0||strcmp(b,"0")==0)//处理输入是0的情况 { printf("0\n"); continue; } memset(d,0,sizeof(d)); memset(c,0,sizeof(c)); solve(a); solve(b); int lena=strlen(a); int lenb=strlen(b); max1=k=0; for(i=0;i
      
       =k) c[q]=0; d[q]=c[q]+d[q]+up; up=d[q]/10; d[q]=d[q]%10; } if(up!=0) d[max1++]=up;//d数组存放前i位数分别与b相乘后的和 } int flag=1; for(j=max1-1;j>=0;j--) { if(flag==1&&d[j]==0)//用来处理前导0问题 continue; printf("%d",d[j]); flag=0; } printf("\n"); } }
      
     
    
   
  


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇leetcode_wordladder 下一篇poj1436 Horizontally Visible Se..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: