题目描述

求两数的积。

输入输出格式

输入格式:

两行,两个数。

输出格式:

输入输出样例

输入样例#1:

1
2
输出样例#1:

2

说明

每个数字不超过10^2000,需用高精

这道题还是比较良心的,毕竟在说明中提示了要用高精,那么就要我们用到高精的乘法算法,代码如下:

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<iomanip>//本蒟蒻习惯打上所有头文件;
using namespace std;
int main()
{
char a1[],b1[];
int a[]={},b[]={},c[]={},lena,lenb,lenc,i,j,x;//把a,b,c,数组清零,也可以用memset(a/b/c,0,sizeof(a/b/c));x代表进位数。
scanf("%s",a1);
scanf("%s",b1);//对于洛谷的输入格式,用gets可能会卡bug。
lena=strlen(a1);lenb=strlen(b1);//计算a1、b1的长度,便于后面的循环和进位。
for(i=;i<=lena-;i++) a[lena-i]=a1[i]-;
for(i=;i<=lenb-;++i) b[lenb-i]=b1[i]-;//把字符数组中的数存在a、b数组中,可以像本代码中直接对字符进行计算,也可以用强制类型转换来转换。
for(i=;i<=lena;++i)//外循环用于对第一个数的每一个数进行计算。
{
x=;//一定要记住把进位数在内循环内清零,否则将会出现意想不到的效果。
for(j=;j<=lenb;j++)//内循环用于对第二个数的计算。
{
c[i+j-]=a[i]*b[j]+x+c[i+j-];//把第i+j-1个数赋值,(至于为啥是第i+j-1个数,可以自己推一推,直接记住就行)它的值就是第一个数的第i位于第二个数的第j位之积加上进位的数(包括上一位进的数与上一个循环进的数)。
x=c[i+j-]/;//进位处理,取该数的进位数。
c[i+j-]%=;//保留个位数。
}
c[i+lenb]=x;//将内循环没有进完的数进到下一个循环内。
}
lenc=lena+lenb;//计算c数组的最大长度。
while(c[lenc]==&&lenc>)//c[lenc]==是对0的判定,如果该位不是0,且满足lenc>(希望有大神指点一下为什么要判定这个,我将这个去掉后也没有什么区别),就输出。
lenc--;//保证循环开始时不是0。
for(i=lenc;i>=;i--)//循环输出c数组。
cout<<c[i];
cout<<endl;
return ;//好习惯别忘记。
}

高精乘法计算就是把我们平时用竖式做的乘法转化成更智障的算法,例如53*79:

5    3

x    7    9


2    7

+       4    5

+       2    1

+3     5


4     1    8   7

通过程序就可以处理10的n次方之间的乘法,真的很实用。

最新文章

  1. Spring MVC返回Map格式JSON数据
  2. 《CMake实践》笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE
  3. jQuery easyui 扩展form插件的三个方法
  4. android系统平台显示驱动开发简要:LCD基本原理篇『一』
  5. hdu 5025 Saving Tang Monk 状态压缩dp+广搜
  6. xceed wpf datagrid
  7. 6.PHP 教程_PHP数据类型
  8. js鼠标滑轮侧边广告(仅IE可用)
  9. JQuery实现banner图滚动
  10. linux socket编程:简易客户端与服务端
  11. SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传
  12. DataFrame 重新设置索引: reindex 和 reset_index 的区别
  13. Python相关文章
  14. 移动应用开发技术选型:WebApp&gt;HybridApp&gt;NativeApp
  15. [C++]Qt程式异常崩溃处理技巧(Win)
  16. 当通过Nuget包管理器获取还原组时,出现 提示 “xxxxx”已拥有为“xxxxx”定义的依赖项
  17. html5 canvas旋转
  18. 如鹏网学习笔记(五)MySql基础
  19. opencv:图像的基本变换
  20. 如何清除svn的账号缓存信息(solaris)

热门文章

  1. let声明
  2. 微信小程序开发 (资料汇总,谁还没被坑过?希望助你绕过一些坑)
  3. H5 基于Web Storage 的客户端留言板
  4. Winform数据库连接app.config文件配置
  5. MySQL源码包编译安装
  6. iview inoput type=textarea 禁止拉伸
  7. 家庭记账本小程序之增(java web基础版三)
  8. 【刷题】若串 =’software’ ,其子串数目为:37
  9. Ubuntu 系统安装详解 19.04最新版本
  10. JDK环境配置(Windows)