uva 10106 Product 大数相乘
来源:互联网 发布:免费解压软件 编辑:程序博客网 时间:2024/05/16 01:49
Sample Input
12
12
2
222222222222222222222222
Sample Output
144
444444444444444444444444
大数乘法,把字符串反过来储存在int型数组中
如s1[i] 2 1 0
乘数 1 2 5
S2[j] 2 1 0
乘数 1 2 5
5和5相乘的结果在0位,2和5相乘的结果在第1位,所以发现第i位乘以第j位的值在第i+j位,由此可以直接模拟乘法运算,但是数据可能为000001*0000001,最后要检查前导0
#include<stdio.h>#include<string.h>int main(){ int n,m; char a[300],b[300]; int s1[300],s2[300],s[11000]; while(~scanf("%s%s",a,b)) { for(int i=0; i<300; i++) s1[i]=s2[i]=0; memset(s,0,sizeof(s)); n=strlen(a); m=strlen(b); int j=0,k=0; for(int i=n-1; i>=0; i--) s1[j++]=a[i]-'0'; for(int i=m-1; i>=0; i--) s2[k++]=b[i]-'0'; int i,t,p; for( i=0; i<j; i++) for(t=0; t<k; t++) { s[i+t]+=s1[i]*s2[t]; if(s[i+t]>9) { s[i+t+1]+=s[i+t]/10; s[i+t]=s[i+t]%10; } } p=i+t; while(s[p-1]>9) { s[p]+=s[p-1]/10; s[p-1]=s[p-1]%10; p++; } for( ;;) //去掉前导0 { if(s[p]!=0||p==0) break; if(s[p]==0) p--; } for(int f=p; f>=0; f--) printf("%d",s[f]); printf("\n"); } return 0;}
0 0
- uva 10106 Product 大数相乘
- UVA 10106 - Product (大数相乘问题)
- uva - 10106 - Product(大数相乘)
- UVA 10106 Product (大数相乘)
- uva 10106 Product (大数相乘)
- UVA 10106 Product(大数相乘)
- Uva 10106 Product (高精度相乘)
- Product(大数相乘)
- Product //大数相乘
- uva 10106 - Product 大数乘法
- UVA 10106-Product(大数乘法)
- UVA 10106 (大数相乘 13.08.02)
- uva 10106 Product(大数乘法)
- UVA 10106 - Product(大数乘法)
- UVA 10106 Product(大数乘法)
- uva 10106 Product(高精度大数乘法)
- UVA - 10106 Product(大数模板)
- UVA Product(大数乘法)
- Android增量更新研究
- 常见问题以及解决方案
- poj EXTENDED LIGHTS OUT 高斯消元
- bzoj2621 [Usaco2012 Mar]Cows in a Skyscraper奶牛乘电梯
- android studio中如何将一个项目的apk安装包输出到其他工程目录下
- uva 10106 Product 大数相乘
- python doc word文件转txt、html
- java运算符计算整理
- 每天一个算法之寻找第一个只出现一次的数
- EL表达式学习
- java经纬度两点距离计算方法
- charles 为什么能抓https的包?原理是什么?
- MaterialDesignColor谷歌官方的MaterialDesign颜色代码
- 图像处理相关问题