首页 > 其他分享 >P1303 A*B Problem——高精度乘法

P1303 A*B Problem——高精度乘法

时间:2024-12-29 21:21:43浏览次数:5  
标签:aa 10 非负 int 2024 length P1303 Problem 乘法

题目背景

高精度乘法模板题。

题目描述

给出两个非负整数,求它们的乘积。

输入格式

输入共两行,每行一个非负整数。

输出格式

输出一个非负整数表示乘积。

样例 #1

样例输入 #1

1 
2

样例输出 #1

2

提示

每个非负整数不超过 \(10^{2000}\)。

我的作答

#include <stdio.h>
#include <string.h>
int main() {
	char aa[2024];
	char bb[2024];
	int a[2024]={0};
	int b[2024]={0};
	int c[4048]={0}; // 结果的最大位数是a和b位数之和
	scanf("%s",aa);
	scanf("%s",bb);
	for (int i=0;i<strlen(aa);i++) {
		a[i] = aa[strlen(aa)-i-1]-'0';
	}
	for (int i=0;i<strlen(bb);i++) {
		b[i] = bb[strlen(bb)-i-1]-'0';
	}
	for (int i=0;i<strlen(bb);i++) {
		for (int j=0;j<strlen(aa);j++) {
			c[i+j] += b[i]*a[j];
//			if (c[i+j] >= 10) {
//				c[i+j+1] += c[i+j]/10;
//				c[i+j]%=10;
//			}
		}

	}
	for (int i=0;i<strlen(aa)+strlen(bb);i++) {
		if (c[i]>=10) {
			c[i+1] += c[i]/10;
			c[i] %= 10;
		}
	}
	int length=strlen(aa)+strlen(bb);
	while (c[length-1]==0 && length>1) { //去除前导零,注意是length-1
		length--;
	}
	for (int i=length-1;i>=0;i--) {
		printf("%d",c[i]);
	}
}

标签:aa,10,非负,int,2024,length,P1303,Problem,乘法
From: https://www.cnblogs.com/xiins/p/18639564

相关文章

  • P1601 A+B Problem(高精)——高精度加法
    题目描述高精度加法,相当于a+bproblem,不用考虑负数。输入格式分两行输入。\(a,b\leq10^{500}\)。输出格式输出只有一行,代表\(a+b\)的值。样例#1样例输入#111样例输出#12样例#2样例输入#210019099样例输出#210100提示\(20\%\)的测试数据,\(0\le......
  • Problem about GCD
    思路首先容易发现题目相当于让你找到一个互质数对\((a,b)\)使得\(l\leqa\cdotG\leqb\cdotG\leqr\),求\(b-a\)最大化然后你发现区间缩小量并不大,简单的,问题可以视作在一个\(10^{18}\)的区间里找互质数对很快你发现,如果从左到右扫\(a\),从右到左扫......
  • 机器学习:线性回归:最小二乘法应用一元线性回归(持续更新)
    目录前言(基础知识的准备最小二乘法在回归中的应用)利用最小二乘法解决最简单的一元线性回归问题第一步:引入必要的库并且创建数据集(这里使用的例子是房价与面积的关系)第二步利用某些方法去用一条直线去拟合你的数据第三步观察与测评求出的W,B值与数据集的拟合程度并且......
  • 看下面这个Rust程序,我想知道 other_error => panic!("Problem opening the file: {:?}
    看下面这个Rust程序,我想知道other_error=>panic!("Problemopeningthefile:{:?}",other_error)这一行代码,为什么是other_error=>panic...而不是_=>panic...?usestd::fs::File;usestd::io::ErrorKind;fnmain(){letf=File::open("hello.txt&qu......
  • 乘法逆元笔记(蒙哥马利快速幂模)
    乘法逆元笔记(蒙哥马利快速幂模)定义何为逆元?逆元,又称数论倒数。若整数a、b满足同余方程a*b=1(modn),那么a,b互为模n意义下的逆元。前置\(1\):快速幂给你三个整数\(a,b,p\),求\(a^b\bmodp\)。如果直接算复杂度太高了,我们优化。基本的快速幂公式\(a^b\)有两种情况,一种是......
  • Google Kickstart2021 Round C Problem A
    数位DP传送思路简单的数位DP,假定每一位的字符前面是最大的字符,对于每一位的字符,小于当前字符的数量是(s[i]-'a'),此时如果这样选择,那么后面的每一个到字符串中间的字符都可以任选m个,设第i个到中间字符的数量是y,所以此时可以构成的满足条件的字符是\((s[i]-'a')*m^y\)但是我们......
  • 每日一题:乘法表【蓝桥杯2020省B】
    目录一、题目二、更多测试用例1、用例一​编辑2、用例二​编辑3、用例三​编辑三、解题思路一、题目二、更多测试用例1、用例一2、用例二3、用例三三、解题思路1、经阅读题目,我们可以知道,题目中的乘法表只是我们小学学过的九九乘法表的变表。它要求我们输出在不......
  • 快速幂优化高精度乘法
    NOI1.612题目描述题目给出的\(n\)最大可以取到\(100\),即计算\(2^{100}\),明显是超过longlong的\(2^{63}-1\),所以需要使用高精度来计算幂次方的乘法简单的高精度,即每次计算一个小整数乘上一个大整数循环\(n\)次,每次对上一次的积都乘以\(2\)vector<int>ans=......
  • 「ARC020C」 A mod B Problem
    题意最开始有一个空的数\(s\),给定\(n\)组整数\(a,l\),表示把\(a\)复制\(l\)次再粘贴到\(s\)后,求最终\(s\)对\(b\)取模的值。分析考虑用\(s_{i}\)表示第\(i\)次操作后的值,我们只需要模拟每一次操作就行了,但是这个\(l\)的范围卡的很死。但我们发现\(n\)不......
  • [BZOJ3489] A simple rmq problem
    考虑当没有强制在线时,容易想到一个点\(i\)所影响的区间\([l,r]\)满足\(pr_i<l\lei,i\ler<nx_i\)。显然可以转化为矩阵修改,单点求\(\max\)的问题。那扫描线\(+\set\)轻松拿下。强制在线就把线段树换成主席树就可以了。注意这里不能下传标记,所以得用标记永久化。但是......