【洛谷P1303A*Bprublem】
题目描述
求两数的积。
输入输出格式
输入格式:
两行,两个数。
输出格式:
积
输入输出样例
1
2
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次方之间的乘法,真的很实用。
【洛谷P1303A*Bprublem】的更多相关文章
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- JavaScript代码组织结构良好的5个特点
JavaScript代码组织结构良好的5个特点,随着JavaScript项目的成长,如果你不小心处理的话,他们往往会变得难以管理.我们发现自己常常陷入的一些问题: 当在创建新的页面时发现,很难重用或测 ...
- mybatis 错误
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR ...
- NetSec2019 20165327 Exp7 网络欺诈防范
NetSec2019 Exp7 网络欺诈防范 一.本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (1分) (2)ette ...
- 如何使用 IDEA 创建项目并且上传到 GitHub
在 GitHub中 注册创建账号 :https://github.com 下载安装 Git : https://git-scm.com 安装成功后打开 Git Bash,输入下列命令,设置 Git 全 ...
- JS深度判断两个对象字段相同
代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...
- 04-JavaScript之常见运算符
JavaScript之常见运算符 1.赋值运算符 以var x=12,y=5来演示示例 运算符 例子 等同于 运算结果 = x=y x=5 += x+=y x=x+y x=17 -= x-=y x ...
- [2019BUAA软工助教]第0次个人作业
[2019BUAA软工助教]第0次个人作业 一.前言 我认为人生就是一次次地从<存在>到<光明>. 二.软件工程师的成长 博客索引 同学们在上这门课的时候基本都是大三,觉得在大 ...
- 三种dedecms友情链接调用标签
三种dedecms友情链接调用标签: 1.获取友情链接分类 {dede:flinktype}<span>[field:typename/]</span>{/dede:flink ...
- 【转】IT行业岗位以及发展方向
以下转自https://blog.csdn.net/qq_23994787/article/details/79847270 职业生涯规划的意义 1.以既有的成就为基础,确立人生的方向,提供奋斗的策略 ...
- 【学习总结】GirlsInAI ML-diary 总
2019-1-7 GirlsInAI第一期: 人工智障工程师养成计划,代号ML-diary 原博github链接:Girls-In-AI 环境:Windows / MacOS 工具:Anaconda ...