C++高精度乘法

C++高精度乘法C 中数据存储的范围是有限的 最长的 longlong 型最大只能存储 2 63 1 如果要是需要存储更大的数就只能使用数组了 这样存储的数的运算需要另外编写程序 这里介绍高精度乘法这种乘法的运算类似于小学学习的竖式 从个位开始 一个乘数逐位乘

大家好,欢迎来到IT知识分享网。

代码

#include<iostream> #include<string> #include<algorithm> using namespace std; const int N=1e6; int a[N],b[N],ans[N]; string s1,s2; int main() { cin>>s1>>s2; int len1=s1.length(); int len2=s2.length(); for(int i=1;i<=len1;i++) a[i]=s1[len1-i]-'0'; //反序存储 for(int i=1;i<=len2;i++) b[i]=s2[len2-i]-'0'; int k,tmp; for(int i=1;i<=len2;i++) { k=i; //错位 tmp=0; //记录进位 for(int j=1;j<=len1;j++) { ans[k]+=b[i]*a[j]+tmp; //将之前此外的数和此次相乘的结果和进位相加 tmp=ans[k]/10; //除10是下一次的进位 整除 ans[k]=ans[k]%10; //模10本位 k++; } ans[k]=tmp; //最后可能都乘完,还剩下进位 } int i; for(i=k;i>1;i--) if(ans[i]!=0) //除0 break; for(;i;i--) //反序输出 cout<<ans[i]; return 0; }

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/183112.html

(0)
上一篇 2025-07-12 11:26
下一篇 2025-07-12 11:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信