洛谷 P1303 A*B Problem(高精度乘法) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接 :https://www.luogu.org/problem/show?pid=1303

题目描述

求两数的积。

输入输出格式

输入格式:

两行,两个数。

输出格式:

输入输出样例

输入样例#1:

1
2

输出样例#1:

2

说明

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

AC代码:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5
 6 using namespace std;
 7 const int MAXN = 10000 + 5;
 8
 9 struct bign
10 {
11     int len;
12     bool flag;
13     int num[MAXN];
14
15     bign(){len = 0;flag = false;memset(num,0,sizeof(num));}
16
17     void clear()
18     {
19         len = 0;
20         flag = false;
21         memset(num,0,sizeof(num));
22     }
23 };
24 bign ans;
25
26 inline bool judge(bign a)
27 {
28     if(a.len == 1 && a.num[1] == 0)
29         return true;
30     return false;
31 }
32
33 bign operator *(bign &a,bign &b)
34 {
35     int x = 0;
36     ans.clear();
37     int len = a.len + b.len + 1;
38     for(int i = 1;i <= a.len;++ i)
39     {
40         for(int j = 1;j <= b.len;++ j)
41         {
42             ans.num[i+j-1] += a.num[i]*b.num[j]+x;
43             x = ans.num[i+j-1]/10;
44             ans.num[i+j-1] %= 10;
45         }
46         ans.num[i+b.len] += x;x = 0;
47     }
48     while(!ans.num[len]) len --;
49     ans.len = len;
50     return ans;
51 }
52
53 inline bign get()
54 {
55     ans.clear();
56     string s;
57     cin>>s;
58     int len = s.length();
59     for(int i = 0;i < len;++ i)
60         ans.num[len-i] = s[i]-‘0‘;
61     ans.len = len;
62     return ans;
63 }
64
65 inline void print(bign a)
66 {
67     int len = a.len;
68     for(int i = len;i >= 1;-- i)
69         printf("%d",a.num[i]);
70     puts("");
71 }
72
73 int main()
74 {
75     bign a,b;
76     a = get();
77     b = get();
78     if(judge(a) || judge(b))
79         printf("0\n");
80     else
81
82         print(a*b);
83     return 0;
84 } 

注意要特判a或b为0的情况

时间: 2024-10-24 00:42:38

洛谷 P1303 A*B Problem(高精度乘法) 题解的相关文章

洛谷 P1303 A*B Problem 高精度乘法

P1303 A*B Problem 时空限制1s / 128MB 题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 ------------------------------------------------------------------------------------------------ 既然有了高精度加减法,那就有高精度乘法 跟我们平时计算

洛谷1001 A+B Problem

洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9).注意1.pascal使用integer会爆掉哦!2.有负数哦!3.c/c++的main函数必须是int类型,而且最后要return 0.这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求! 好吧,同志们,我们就从这一题开始,向着大牛的路进发.“任何一个伟大的思想,都有一个微不足道的

洛谷 P1001 A+B Problem

题目描述 输入两个整数a,b,输出它们的和(|a|,|b|<=10^9). 注意 1.pascal使用integer会爆掉哦! 2.有负数哦! 3.c/c++的main函数必须是int类型,而且最后要return 0.这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求! 好吧,同志们,我们就从这一题开始,向着大牛的路进发. “任何一个伟大的思想,都有一个微不足道的开始.” 输入输出格式 输入格式: 两个整数以空格分开 输出格式: 一个数 输入输出样例 输入样例#1: 20 30 输出样

BZOJ4943 &amp; 洛谷3823 &amp; UOJ315:[NOI2017]蚯蚓排队——题解

https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.org/problemnew/show/P3823#sub 题面太长自己看吧orz. 参考:洛谷题解. 用链表暴力维护每个蚯蚓,每次合并和分离只对k*k的元素有影响,哈希一下存起来query时候比较就好了. 没了. (具体复杂度我不会证明,以及bzoj卡空间,正常的哈希表空间总觉得不能开如代码所示的这么

洛谷3258:[USACO2012 MAR]Flowerpot 花盆——题解

https://www.luogu.org/problemnew/show/P2698#sub 老板需要你帮忙浇花.给出N滴水的坐标,y表示水滴的高度,x表示它下落到x轴的位置. 每滴水以每秒1个单位长度的速度下落.你需要把花盆放在x轴上的某个位置,使得从被花盆接着的第1滴水开始,到被花盆接着的最后1滴水结束,之间的时间差至少为D. 我们认为,只要水滴落到x轴上,与花盆的边沿对齐,就认为被接住.给出N滴水的坐标和D的大小,请算出最小的花盆的宽度W. 单调队列好题,参考洛谷题解. emm……显然是

洛谷 P1601 A+B Problem(高精) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接 :https://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输出只有一行,代表A+B的值 输入输出样例 输入样例#1: 1 1 输出样例#1: 2 AC代码: 1 #include<

洛谷——P1832 A+B Problem(再升级)

P1832 A+B Problem(再升级) 题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n,求将其分解成若干个素数之和的方案总数. 输入输出格式 输入格式: 一行:一个正整数n 输出格式: 一行:一个整数表示方案总数 输入输出样例 输入样例#1: 7 输出样例#1: 3 说明 [样例解释] 7=7 7=2+5 7=2+2+3 [福利数据] [

洛谷P1832 A+B Problem(再升级) [2017年4月计划 动态规划03]

P1832 A+B Problem(再升级) 题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n,求将其分解成若干个素数之和的方案总数. 输入输出格式 输入格式: 一行:一个正整数n 输出格式: 一行:一个整数表示方案总数 输入输出样例 输入样例#1: 7 输出样例#1: 3 说明 [样例解释] 7=7 7=2+5 7=2+2+3 [福利数据] [

洛谷 P1865 A % B Problem(简单区间素数) 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1865 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line 输入输出样例 输入样例#1: 2 5 1 3