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

P1303 A*B Problem

  • 时空限制1s / 128MB

题目描述

求两数的积。

输入输出格式

输入格式:

两行,两个数。

输出格式:

输入输出样例

输入样例#1:

1
2

输出样例#1:

2

说明

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

------------------------------------------------------------------------------------------------

既然有了高精度加减法,那就有高精度乘法

跟我们平时计算的习惯不同,实际操作的时候不用管两个大整数位数的多少,直接选一个大整数的每一位与另一个大整数的每一位分别相乘后进位,不用管谁上谁下

而且结果的位数一定不大于两大整数位数的和

AC代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define maxn 23333
 4 struct BigNum{
 5     int s[maxn],len;
 6     BigNum(){len=1;memset(s,0,sizeof(s));}
 7 };
 8 char ai[maxn],bi[maxn];
 9 BigNum a,b,c;
10 void ride(BigNum*,BigNum*,BigNum*);
11 int main(){
12     scanf(" %s %s",ai,bi);
13     a.len=strlen(ai);
14     b.len=strlen(bi);
15     for(int i=a.len-1;i>=0;i--) a.s[a.len-i]=ai[i]-48;
16     for(int i=b.len-1;i>=0;i--) b.s[b.len-i]=bi[i]-48;
17     ride(&a,&b,&c);
18     for(int i=c.len;i>0;i--) printf("%d",c.s[i]);
19     return 0;
20 }
21 void ride(BigNum *x,BigNum *y,BigNum *z){
22     z->len=x->len+y->len;
23     for(int i=1;i<=x->len;i++)
24        for(int j=1;j<=y->len;j++){
25            z->s[i+j-1]+=x->s[i]*y->s[j];
26            z->s[i+j]+=z->s[i+j-1]/10;
27            z->s[i+j-1]%=10;
28        }
29     while(z->len>1&&!z->s[z->len]) z->len--;
30 }

高精度乘法

时间: 2024-09-29 10:51:29

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

洛谷 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<iost

洛谷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 输出样

洛谷 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

洛谷——P1480 A/B Problem

P1480 A/B Problem 题目描述 输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9) 输入输出格式 输入格式: 两行,第一行是被除数,第二行是除数. 输出格式: 一行,商的整数部分 输入输出样例 输入样例#1: 复制 10 2 输出样例#1: 复制 5 高精除(模拟) #include<cstdio> #include<cstring> #include<iostream> #include<algorithm>

洛谷 P2005 A/B Problem II

P2005 A/B Problem II 题目背景 为了让大家紧张的心情放松一下,这一题题是一道非常简单的题目. 题目描述 给出正整数N和M,请你计算N div M(N/M的下取整). 输入输出格式 输入格式: 一行,两个正整数,N和M. 输出格式: 一行,一个整数,表示N div M. 输入输出样例 输入样例#1: 复制 1000 333 输出样例#1: 复制 3 说明 • 对于60%的数据:N,M ≤ 750!,答案≤ 7!. • 对于100%的数据:N,M ≤ 6250!,答案≤ 13!.