c++解决大整数乘法

c++解决大整数乘法c++解决大整数乘法问题描述:求两个不超过200位的非负整数的积输入数据:输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出要求:输出只一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么不能输出0342。输入样例:1234567890098765432100输出样例:1219326311126352690000解题思路:采用列乘法竖式的求解思路,采用数组…

大家好,又见面了,我是你们的朋友全栈君。

c++解决大整数乘法

问题描述:求两个不超过200位的非负整数的积

输入数据:输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

输出要求:输出只一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么不能输出0342。

输入样例:

12345678900

98765432100

输出样例:

1219326311126352690000

解题思路:

采用列乘法竖式的求解思路,采用数组存放逐位相乘后的结果,最后再把低位的进位加到高位上去。

运行结果示例:

c++解决大整数乘法

C++代码如下:

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
	char x1[200]={'\0'};
	char x2[200]={'\0'};
	int jinwei[401]={0};
	int result[400]={0};
	//输入并求长度
	cin>>x1>>x2;
	int len1=strlen(x1);
	int len2=strlen(x2);
	//字符数组翻转
	strrev(x1);
	strrev(x2);
	//把两乘数由char转化为int数组,便于相乘运算
	int x[200]={0};
	int y[200]={0};
	int i,j;//循环变量
	for(i=0;i<=len1-1;i++)
		x[i]=x1[i]-'0';
	for(i=0;i<=len2-1;i++)
		y[i]=x2[i]-'0';
	//不考虑进位的竖式乘法
	for(j=0;j<=len2-1;j++)
	{
		for(i=0;i<=len1-1;i++)
		{
			result[i+j] += x[i]*y[j];	
		}	
	}
	//求两乘数长度的最大值
	int lenmax=(len1>len2)?len1:len2;
	//逐次把进位累加到结果中(由于累计后的结果可能又产生了新的进位,故需要循环累加)
	for(int times=0;times<=lenmax+1;times++)//循环的次数和竖式的高度有关,为两乘数长度的最大值
	{
		//求进位
		for(i=399;i>=0;i--)
		{
			jinwei[i+1]=result[i]/10;
		}
		//把进位累加到结果中
		for(i=399;i>=0;i--)
		{
			result[i]=result[i]%10+jinwei[i];
		}
	}
	//求result的前导0的位置
	int right_result=0;
	for(i=399;i>=0;i--)
	{
		if( result[i]!=0)
		{
			right_result=i;
			break;
		}
	}
	//省略前导0的输出
	for(i=right_result;i>=0;i--)
		cout<<result[i];
	cout<<endl;
return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137067.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm 2021.4.1 激活码破解方法

    pycharm 2021.4.1 激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    43
  • 200个Gmail邀请,要的请留下邮箱地址

    200个Gmail邀请,要的请留下邮箱地址

    2021年7月22日
    482
  • SQLite 下载与安装「建议收藏」

    SQLite 下载与安装「建议收藏」一,安装1.到sqlite官网下载压缩包https://www.sqlite.org/download.html下载后是下面这2个文件:解压到同一目录,如图:”安装”完成后,在cmd下,执行sqlite3验证下是否安装正常。若不正常则需要添加系统环境变量,以便命令行式的操作。二,安装管理工具官网:http://sqlitestudio.pl或直接访问下载https://github.com/pawelsalawa/sqlitestudi…

    2025年8月2日
    3
  • java中中文乱码_java中中文乱码怎么解决?「建议收藏」

    java中中文乱码_java中中文乱码怎么解决?「建议收藏」java中中文乱码解决方法:一、设置工作空间的编码1、编辑器的编码会影响到所有的项目中的字符的显示,可以说是作用最为广泛的设置,每一个项目都会受到这个设置的影响。点击菜单栏中的窗口(Window)——选项(Preferences)。2、点击常规(General)——工作空间(Wordspace),然后在右侧的文本文件编码格式(Textfileencoding)中选择你想要设置的编码格式,系…

    2022年7月7日
    161
  • Java类加载,getClassLoader()

    Java类加载,getClassLoader()转自【java类加载的深入研究1】loadClass()的研究,IBM深入探讨Java类加载器类加载器基本概念顾名思义,类加载器(classloader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java字节代码(.class文件)。类加载…

    2022年5月27日
    31
  • HTML的dpr

    HTML的dpr只是为了自己以后查找方便 看不懂勿怪 DPI PPI 屏幕像素密度或屏幕每英寸的像素数量 dips 手机尺寸或独立像素物理像素 手机分辨率 dpr nbsp window devicePixelR js 可以拿到 css 定义 psd 转换 rem 单位 rem px 基准值基准值 手机宽高 dpr 10 乘以 dpr 是因为页面有可能缩放除以 10 是为了取整

    2025年9月22日
    4

发表回复

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

关注全栈程序员社区公众号