大数加法 及 乘法
2016-05-19 21:06
309 查看
大数加法:比较好理解就不打注释了 (hdu1002)http://acm.hdu.edu.cn/showproblem.php?pid=1002
整理的大数乘法,为了避免忘记,加强一下记忆,可以自己先按照笔算的时候的算法写一遍,再按照代码的思路写一下,进行一下对比可以很快了解代码思路的。
#include<stdio.h> #include<string.h> //#include<time.h> int main() { int T; scanf("%d",&T); int k=1; getchar(); for(int q = 0; q < T; q++) { char s1[1010],s2[1010]; int num1[1010] = {0},num2[1010] = {0}; scanf("%s %s",s1,s2); printf("Case %d:\n",k); int i,j,len1,len2; len1 = strlen(s1); len2 = strlen(s2); for(i = len1 - 1,j = 0; i >= 0; i--) { num1[j++] = s1[i] - '0'; } for(i = len2 - 1,j = 0; i >= 0; i--) num2[j++] = s2[i] - '0'; for(i = 0; i < 1008; i++) { num1[i]+=num2[i]; if(num1[i] > 9) { num1[i] -= 10; num1[i + 1]++; } } printf("%s + %s = ",s1,s2); int flag = 1; for(i = 1009; i >= 0; i--) { if(num1[i] == 0 && flag == 1) continue; else if(num1[i] != 0 && flag == 1) flag = 0; if(flag == 0) printf("%d",num1[i]); } if(k == T ) printf("\n"); else printf("\n\n"); k++; } // printf("%.2lf\n",(double)clock()/CLOCKS_PER_SEC); return 0; }
整理的大数乘法,为了避免忘记,加强一下记忆,可以自己先按照笔算的时候的算法写一遍,再按照代码的思路写一下,进行一下对比可以很快了解代码思路的。
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; int main(void) { char s1[510],s2[510],temp[510]; int a[510],b[510],c[1010]; while(scanf("%s%s",s1,s2)==2) { int i,j,h; int len1,len2; if(strlen(s1)<strlen(s2)) //首先保证前一个长度要大于等于后一个 { strcpy(temp,s1); strcpy(s1,s2); strcpy(s2,temp); } len1=strlen(s1); len2=strlen(s2); memset(c,0,sizeof(c)); //积数组的初始化 for(i=len1-1,j=0;i>=0;i--) a[j++]=s1[i]-'0'; for(i=len2-1,j=0;i>=0;i--) b[j++]=s2[i]-'0'; for(i=0;i<len2;i++) //第二个数的的当前位要乘以第一个数的每一位之后在相加 for(j=0;j<len1;j++) c[i+j] += a[j]*b[i]; //累加 for(i=0;i<2*len1;i++) //乘法时积数组的长度最大不会超过最大的那个乘数长度 if(c[i]>=10) { c[i+1] += c[i] / 10; c[i] = c[i] % 10; } i=2*len1; while(c[i]==0) //处理前导0 i--; if(i<0) //积等于0的情况 printf("0\n"); else { for(;i>=0;i--) printf("%d",c[i]); printf("\n"); } } return 0; }
相关文章推荐
- 二叉排序树(BSTree)关于查找算法结合
- ArrayList和LikendList
- 找水王01
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- 网页的3层结构 结构层 表示层 行为层
- MySQL添加用户、删除用户与授权
- 第十二周-String类的构造
- UVA375 Inscribed Circles and Isosceles Triangles
- NSThread多线程枷锁
- 帮人的时候 遇到的收藏一下