suseoj 1207: 大整数的乘法(java, 大数相乘)

1207: 大整数的乘法

时间限制: 1 Sec  内存限制: 128 MB
提交: 7  解决: 2
[提交][状态][讨论版][命题人:liyuansong]

题目描述

求两个不超过200位的非负整数的积。

输入

有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

输出

一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

样例输入

12345678900
98765432100

样例输出

1219326311126352690000

分析:  使用Java的BigInteger类来解决

核心代码:  
1 a = sc.nextBigInteger();
2 b = sc.nextBigInteger();
3 System.out.println(a.nultiplt(b));

Java代码实现(AC):

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3
 4
 5 public class Main{
 6     public static void main(String args[]) {
 7         Scanner sc = new Scanner(System.in);
 8         BigInteger a, b;
 9         a = sc.nextBigInteger();
10         b = sc.nextBigInteger();
11         System.out.println(a.multiply(b));
12      }
13 }
 

原文地址:https://www.cnblogs.com/GetcharZp/p/9054709.html

时间: 2024-10-02 09:01:59

suseoj 1207: 大整数的乘法(java, 大数相乘)的相关文章

大菲波数(Fibonacci)java大数(hdu1715)

大菲波数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11520 Accepted Submission(s): 3911 Problem Description Fibonacci数列,定义如下:f(1)=f(2)=1f(n)=f(n-1)+f(n-2) n>=3.计算第n项Fibonacci数值. Input 输入第一行为一个整数N,接

Java大数相乘

import java.io.*; import java.util.*; import java.text.*; import java.math.*; public class Main { public static void main(String []args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); while(cin.hasNext()) { BigInteger a=cin.nextBigI

大整数乘法(简单模拟乘法过程)

一.分析 整数的数值超过计算机硬件所能表示的最大值时,那么我们只能借助软件的方法来实现大整数的乘法了. 我们可以使用字符串来模拟大整数的乘法,算法的思想就是使用我们在小学时学过的乘法,一位位相乘,最后计算出结果.如下: 1    2    3 x    1    2 ------------------------ 2 4 6 1 2 3 ------------------------ 1 4 7 6 为了模拟乘法过程,我们需要使用两个字符串变量,一个保存每一步乘积结果,另一个保存最终的结果.

POJ 1001 解题报告 高精度大整数乘法模版

题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于错误的判断还不够严厉. 对边界情况的讨论其实应该是思维严密的表现,当然这并不能表明我写的一点错误都没有,只是多多分析一下还是很有好处的. #include <iostream> #include <fstream> #include <string> #include &l

大整数算法[13] 单数位乘法

★ 引子 最近在折腾 wxWidgets,同时拖延症又犯了,所以中断了好久.这次来讲讲单数位乘法,前面讲到 Comba 和 Karatsuba 乘法,这两个算法适合用来处理比较大的整数,但是对于一个大整数和一个单精度数相乘,其效果反而会不好,因为计算量过多.实际上单数位乘法只是基线乘法的一个特例,不存在嵌套循环进位,因此可以通过优化减少计算量.另外与完整的乘法不同的是,单数位乘法不需要什么临时变量存储和内存分配(目标精度增加除外). ★ 算法思路         单数位乘法类似于计算 12345

使用快速傅里叶变换计算大整数乘法

我们知道,两个 N 位数字的整数的乘法,如果使用常规的算法,时间复杂度是 O(N2).然而,使用快速傅里叶变换,时间复杂度可以降低到 O(N logN loglogN). 假设我们要计算以下两个 N 位数字的乘积: a = (aN-1aN-2...a1a0)10 = aN-1x10N-1 + aN-2x10N-2 + ... + a1x101 + a0x100 b = (bN-1bN-2...b1b0)10 = bN-1x10N-1 + bN-2x10N-2 + ... + b1x101 + b

大整数的加减乘除

多项式的加减乘除能够利用多项式的加减乘除进行运算,所以下面程序採用了多项式的加减乘除.多项式运算已经在<算法导论>第30章有简要的介绍,详细的请參考数学书. 大整数加法:(利用书上公式轻松得出) //多项式加法-大数加法 #include <iostream> #include <time.h> using namespace std; #define m1 4 #define m2 5 //a[0]=x^0 a[1]=x^1....a[n]=x^n的关于x的多项式系数

大整数的加减乘除C++实现

大整数的乘法由于用分治法理解起来有点困难,就采用人的计算方法实现,大整数为string 类型,结果也为string类型. 大整数的除法采用先乘后减的方法,例如: 665/20 首先20*10=200:然后665去减200,通过循环计入减了3次,则结果记入3*10=30:然后20*1=20,上次减了之后还剩65,65-20,又减了3次,所以结果记入30+3*1=33:最后还剩5,比20小,则余数为5. 大整数的加法减法和人工打草稿过程类似,不做详细分析.实现代码仅供参考: 1 #include<i

基于Java的大整数运算的实现(加法,减法,乘法)学习笔记

大整数,顾名思义就是特别大的整数. 一台64位的机器最大能表示的数字是2的64次方减一: 18446744073709551615 java语言中所能表示的整数(int)最小为-2147483648 public class test { public static void main(String[] args) { System.out.println(Integer.MIN_VALUE); } } 最大为 2147483647 public class test { public stat