suseoj 1207: 大整数的乘法(java, 大数相乘, C/C++, 大数相乘)
1207: 大整数的乘法
时间限制: 1 Sec 内存限制: 128 MB
提交: 7 解决: 2
[提交][状态][讨论版][命题人:liyuansong]
题目描述
输入
输出
样例输入
12345678900
98765432100
样例输出
1219326311126352690000 分析(Java):
使用Java的BigInteger类来解决 核心代码:
a = sc.nextBigInteger();
b = sc.nextBigInteger();
System.out.println(a.nultiplt(b));
Java代码实现(AC):
import java.math.BigInteger;
import java.util.Scanner; public class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
BigInteger a, b;
a = sc.nextBigInteger();
b = sc.nextBigInteger();
System.out.println(a.multiply(b));
}
}
分析(C/C++):
Ⅰ、用C/C++进行乘法运算,就是模拟乘法运算的整个过程;
Ⅱ、要注意两点:
①、进位的处理
②、每一层运算要做到最低位的对齐原则 步骤:
①、将字符串的输入转化为对应的整型数组
②、遍历一个整型数组的每一个数与另一个整型数组所有的数相乘
③、PS,注意:进位、对齐 核心代码:
for(int i = 0; i < len1; ++ i)
{
int b = 0;
for(int j = 0; j < len2 || b; ++ j)
{
int t = i1[i]*i2[j] + ans[i+j] + b;
ans[i+j] = t%10;
b = t/10;
len = max(len, i+j); // len保存最终位数
}
}
C/C++代码实现(AC):
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue> using namespace std; int main()
{
char s1[205], s2[205];
int len1, len2;
scanf("%s%s", s1, s2);
len1 = strlen(s1), len2 = strlen(s2); int i1[205] = {0}, i2[205] = {0}, ans[1000] = {0}, len = 0;
for(int i = 0; i < len1; ++ i)
i1[i] = s1[len1 - 1 - i] - '0';
for(int i = 0; i < len2; ++ i)
i2[i] = s2[len2 - 1 - i] - '0'; for(int i = 0; i < len1; ++ i)
{
int b = 0;
for(int j = 0; j < len2 || b; ++ j)
{
int t = ans[i + j] + i1[i]*i2[j] + b;
ans[i + j] = t%10;
b = t/10;
len = max(len, j + i);
}
}
for(int i = len; i >= 0; -- i)
printf("%d", ans[i]);
printf("\n");
return 0;
}
suseoj 1207: 大整数的乘法(java, 大数相乘, C/C++, 大数相乘)的更多相关文章
- Code Kata:大整数四则运算—乘法 javascript实现
上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...
- POJ 1001 解题报告 高精度大整数乘法模版
题目是POJ1001 Exponentiation 虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...
- 大整数加减运算的C语言实现
目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...
- 【老鸟学算法】大整数乘法——算法思想及java实现
算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...
- [大整数乘法] java代码实现
上一篇写的“[大整数乘法]分治算法的时间复杂度研究”,这一篇是基于上一篇思想的代码实现,以下是该文章的连接: http://www.cnblogs.com/McQueen1987/p/3348426. ...
- 基于Java的大整数运算的实现(加法,减法,乘法)学习笔记
大整数,顾名思义就是特别大的整数. 一台64位的机器最大能表示的数字是2的64次方减一: 18446744073709551615 java语言中所能表示的整数(int)最小为-2147483648 ...
- 算法笔记_034:大整数乘法(Java)
目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 计算两个大整数相乘的结果. 2 解决方案 2.1 蛮力法 package com.liuzhen.chapter5; import ...
- Java实现大整数乘法
1 问题描述 计算两个大整数相乘的结果. 2 解决方案 2.1 蛮力法 package com.liuzhen.chapter5; import java.math.BigInteger; publi ...
随机推荐
- Python之文件的使用
文件概述 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接 ...
- Java中常用的四种线程池
在Java中使用线程池,可以用ThreadPoolExecutor的构造函数直接创建出线程池实例,如何使用参见之前的文章Java线程池构造参数详解.不过,在Executors类中,为我们提供了常用线程 ...
- 保存为txt
打开对话框保存为txt #region this.dDownTable = (DataTable)(this.dg1.DataContext); ) { string fName = string.E ...
- JVM(4) 类文件结构
一.实现“平台无关性” 字节码(ByteCode)存储格式和虚拟机是实现语言无关性的基础.Java虚拟机不和包括Java在内的任何语言绑定,它只与“Clas”文件这种特定的二进制文件格式所关联,Cla ...
- FastReport快速实现条形码,二维码面单打印
一.什么是FastReport? FastReport是功能齐全的报表控件,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持. FastReport有很多产品,如 ...
- js中几种继承实现
继承实现的几种方式 1.借助call实现继承 function p1() { this.name = 'p1' this.say = function () { console.log(this.na ...
- hack the box -- sizzle 渗透过程总结,之前对涉及到域内证书啥的还不怎么了解
把之前的笔记搬运过来 --- 1 开了443,用smbclient建立空连接查看共享 smbclient -N -L \\\\1.1.1.1 Department Shares Operatio ...
- 小白学 Python(18):基础文件操作
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- Android 开源库 GitHub 托管
本文微信公众号「AndroidTraveler」首发. 背景 之前给大家写过一篇文章 Android 上传开源项目到 jcenter 实战踩坑之路,分享了上传开源项目到 jcenter 上面的一些踩坑 ...
- go中的数据结构切片-slice
1.部分基本类型 go中的类型与c的相似,常用类型有一个特例:byte类型,即字节类型,长度为,默认值是0: bytes = []btye{'h', 'e', 'l', 'l', 'o'} 变量byt ...