大数是指计算的数值非常大或者对运算的精度要求非常高,用已知的数据类型无法精确表示的数值。例如:我们要计算如下两个数的乘积时,用我们已知的数据类型是无法精确表示其结果的:
a1 = 22222222222222222222222222222222222
b1 = 22222222222222222222222222222222222111
求:a1 * b1;
题目描述大数是指计算的数值非常大或者对运算的精度要求非常高,用已知的数据类型无法精确表示的数值。例如:我们要计算如下两个数的乘积时,用我们已知的数据类型是无法精确表示其结果的: a1 = 22222222222222222222222222222222222 b1 = 22222222222222222222222222222222222111 求:a1 * b1; 输入要求输入两行:每行一个数字,每行的数字不超过100位; 输出要求输出一行:为这两个大数的乘积 假如输入2222222222222221111
222222222222222
应当输出123456790123456666654320987654321
#include<iostream> #include<algorithm> #include <vector> #include<string.h> #include<ctype.h> #include<math.h> using namespace std; void fun(); int main() { fun(); return 0; } void fun() { int len1,len2,i,start,j,k,ans[201]; char str1[100],str2[100]; gets(str1); gets(str2); len1=strlen(str1); len2=strlen(str2); if(str1[0]=='0'||str2[0]=='0') cout<<0<<endl; else { memset(ans,sizeof(ans)); for(i=len1-1,k=0;i>=0;i--,k++) { for(j=len2-1,start=k;j>=0;j--) { ans[start++]+=(str1[i]-'0')*(str2[j]-'0'); } } for(i=0;i<200;i++) { if(ans[i]>9) { ans[i+1]+=ans[i]/10; ans[i]%=10; } } for(i=200;i>=0;i--) if(ans[i]!=0) break; for(;i>=0;i--) cout<<ans[i]; cout<<endl; } }完完整整一步一步分析自己写出来的,加油! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |