【题目链接】

ybt 1307:【例1.3】高精度乘法
ybt 1174:大整数乘法
OpenJudge NOI 1.13 09:大整数乘法

【题目考点】

1. 高精度

考察:高精乘高精
高精度计算讲解

【解题思路】

ybt 1307:【例1.3】高精度乘法:该题中是两个100位的数字相乘,结果可能达到200位。
ybt 1174 / OpenJudge 1.13 09 大整数乘法:该题中是两个200位的数字相乘,结果可能达到400位。
代码中将数字数组长度N设为500,即可满足以上两题。

【题解代码】

解法1:使用数组与函数

#include <bits/stdc++.h>
using namespace std;
#define N 505
void Multiply(int a[], int b[], int r[])//高精乘高精
{int i;for(i = 1; i <= a[0]; ++i){int c = 0;for(int j = 1; j <= b[0]; ++j){r[i+j-1] += a[i]*b[j] + c;c = r[i+j-1] / 10;r[i+j-1] %= 10;}r[i+b[0]] += c;}i = a[0] + b[0];//确定数字位数 while(r[i] == 0 && i > 1)i--;r[0] = i;
}
void toNum(char s[], int a[])
{a[0] = strlen(s);for(int i = 1; i <= a[0]; ++i)a[i] = s[a[0] - i] - '0';
}
void showNum(int a[])
{for(int i = a[0]; i >= 1; --i)cout << a[i];
}
int main()
{int a[N] = {}, b[N] = {}, r[N] = {};char s[N];cin >> s;toNum(s, a);cin >> s;toNum(s, b);Multiply(a, b, r);showNum(r);return 0;
}

解法2:使用高精度数字类

#include<bits/stdc++.h>
using namespace std;
#define N 505
class HPN
{private:int a[N];
public: HPN(){memset(a, 0, sizeof(a));}HPN(char s[]){memset(a, 0, sizeof(a));a[0] = strlen(s);for(int i = 1; i <= a[0]; ++i)a[i] = s[a[0] - i] - '0';}int& operator [] (int i){return a[i];}void setLen(int i)//确定数字位数{while(a[i] == 0 && i > 1)i--;a[0] = i;}HPN operator * (HPN &b){HPN r;for(int i = 1; i <= a[0]; ++i){int c = 0;for(int j = 1; j <= b[0]; ++j){r[i+j-1] += a[i]*b[j] + c;c = r[i+j-1] / 10;r[i+j-1] %= 10;}r[i+b[0]] += c;}r.setLen(a[0] + b[0]);return r; }void show(){for(int i = a[0]; i >= 1; --i)cout << a[i];}
};
int main()
{char s1[N], s2[N];cin >> s1 >> s2;HPN a(s1), b(s2), r;r = a*b;r.show();return 0;
}

信息学奥赛一本通 1307:【例1.3】高精度乘法 | 1174:大整数乘法 | OpenJudge NOI 1.13 09:大整数乘法相关推荐

  1. 信息学奥赛一本通 1925:【03NOIP普及组】麦森数 | OpenJudge NOI 4.4 1708:麦森数 | 洛谷 P1045 [NOIP2003 普及组] 麦森数

    [题目链接] ybt 1925:[03NOIP普及组]麦森数 OpenJudge NOI 4.4 1708:麦森数 洛谷 P1045 [NOIP2003 普及组] 麦森数 [题目考点] 1. 高精度 ...

  2. 信息学奥赛一本通 1180 | 1946:【09NOIP普及组】分数线划定 | OpenJudge NOI 1.10 05 | 洛谷 P1068 [NOIP2009 普及组] 分数线划定

    [题目链接] ybt 1180:分数线划定 ybt 1946:[09NOIP普及组]分数线划定 OpenJudge NOI 1.10 05:分数线划定 洛谷 P1068 [NOIP2009 普及组] ...

  3. 信息学奥赛一本通 1848:【07NOIP提高组】字符串的展开 | OpenJudge NOI 1.7 35:字符串的展开 | 洛谷 P1098 [NOIP2007 提高组] 字符串的展开

    [题目链接] ybt 1848:[07NOIP提高组]字符串的展开 OpenJudge NOI 1.7 35:字符串的展开 洛谷 P1098 [NOIP2007 提高组] 字符串的展开 [题目考点] ...

  4. 信息学奥赛一本通 1102:与指定数字相同的数的个数 | OpenJudge NOI 1.6 01

    [题目链接] ybt 1102:与指定数字相同的数的个数 OpenJudge NOI 1.6 01:与指定数字相同的数的个数 [题目考点] 1.一维数组 2. 计数 [题解代码] 解法1: #incl ...

  5. 信息学奥赛一本通 1068:与指定数字相同的数的个数 | OpenJudge NOI 1.5 12

    [题目链接] ybt 1068:与指定数字相同的数的个数 OpenJudge NOI 1.5 12:与指定数字相同的数的个数 [题目考点] 1. 循环统计 [题解代码] 解法1:用if语句 #incl ...

  6. 信息学奥赛一本通 1168:大整数加法 | OpenJudge NOI 1.6 10:大整数加法

    [题目链接] ybt 1168:大整数加法 OpenJudge NOI 1.6 10:大整数加法 [题目考点] 1. 高精度 考察:高精加高精 高精度计算讲解 [解题思路] 注意:输入可能有多余的前导 ...

  7. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  8. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  9. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

最新文章

  1. 阿里CTO张建锋:云拐点已至,All in cloud;贾扬清完整title公开
  2. Recyclerview 出现 java.lang.IndexOutOfBoundsException: Inconsistency detected 异常
  3. 8运行不了_好消息!十堰新建28座充电站,年底投入运行
  4. 滚动条造成页面抖动问题
  5. Flume实战监听网络端口
  6. 详解-OTUS(大津法-最大类间方差)原理及C语言代码实现
  7. 【Flink】Flink 介绍Flink中 Timer 的使用
  8. 转载自(梦想天空)【必备】史上最全的浏览器 CSS JS Hack 手册
  9. JS实现购物车全选、不选、反选的功能(十七)
  10. Python 爬虫工具 —— fake_useragent
  11. vue 插槽的版本变化1.x-2.6.0-3.x(详细)
  12. Java 常见异常以及处理方式
  13. java文件 空心_解决Eclipse中java文件的图标变成空心J的问题
  14. 2018天梯赛第一次训练题解和ac代码
  15. 1周上线系统,效率提升100%,宜搭助力阿里巴巴法务数字化升级
  16. 行业分析| 物流对讲
  17. C++:日志库log4cplus 2.0的使用说明
  18. Pycharm 报错 Environment location directory is not empty 解决
  19. javaer的目标,是星辰大海!
  20. mybatis入门实例(xml文件配置)

热门文章

  1. 详解数据管理发展的5个阶段
  2. 西安交大送大一新生这本书,你读过吗?12本有趣有料的科普书盘点
  3. 为什么 0.1 + 0.2 = 0.300000004
  4. IDEA入门(一):简介、安装
  5. 从Eclipse切换到IDEA后需要做的事情
  6. JEECG 树列表操作总刷新列表,需要重新展开问题 【官方补丁,适用所有版本】
  7. JeeWx捷微 2.4.1版本发布,开源JAVA微信管家平台(支持公众号、企业号)
  8. java应用程序利用Exe4j打包exe文件
  9. Activiti 监听器的配置使用
  10. MySQL基础篇(03):系统和自定义函数总结,触发器使用详解