1207: 大整数的乘法

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

题目描述

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

输入

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

输出

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

样例输入

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++, 大数相乘)的更多相关文章

  1. Code Kata:大整数四则运算—乘法 javascript实现

    上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...

  2. 剑指offer第12题打印从1到n位数以及大整数加法乘法

       字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...

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

    题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...

  4. 大整数加减运算的C语言实现

    目录 大整数加减运算的C语言实现 一. 问题提出 二. 代码实现 三. 效果验证 大整数加减运算的C语言实现 标签: 大整数加减 C 一. 问题提出 培训老师给出一个题目:用C语言实现一个大整数计算器 ...

  5. 【老鸟学算法】大整数乘法——算法思想及java实现

    算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...

  6. [大整数乘法] java代码实现

    上一篇写的“[大整数乘法]分治算法的时间复杂度研究”,这一篇是基于上一篇思想的代码实现,以下是该文章的连接: http://www.cnblogs.com/McQueen1987/p/3348426. ...

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

    大整数,顾名思义就是特别大的整数. 一台64位的机器最大能表示的数字是2的64次方减一: 18446744073709551615 java语言中所能表示的整数(int)最小为-2147483648 ...

  8. 算法笔记_034:大整数乘法(Java)

    目录 1 问题描述 2 解决方案 2.1 蛮力法   1 问题描述 计算两个大整数相乘的结果. 2 解决方案 2.1 蛮力法 package com.liuzhen.chapter5; import ...

  9. Java实现大整数乘法

    1 问题描述 计算两个大整数相乘的结果. 2 解决方案 2.1 蛮力法 package com.liuzhen.chapter5; import java.math.BigInteger; publi ...

随机推荐

  1. POJ2828 Buy Tickets 树状数组

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  2. 详解立即执行函数(function(){}()),(function(){})()

    要知道这几种写法之间的区别,我们要先聊些题外话——js中函数的两种命名方式,即表达式和声明式. 函数的声明式写法为:function foo(){/*...*/},这种写法会导致函数提升,所有func ...

  3. Vue全局组件注册

    通过Vue.component(‘组件名’, {配置对象})注册全局组件 在main.js中注册全局组件 test import Vue from 'vue' import App from './A ...

  4. 玩转 RTC时钟库 DS3231

    1.前言     接着博主的上一篇 玩转 RTC时钟库 + DS1302,这一篇我们重点讲解DS3231时钟模块.没有看过上一篇的同学,麻烦先去阅读一下,因为很多理论基础已经在上一篇做了详细讲解,这里 ...

  5. Rancher 2.3.2 Stable!Istio UI已经GA!生产可用!

    2019年10月9日,Rancher 2.3正式发布,这是Rancher Labs迄今为止最重要的产品版本.Rancher 2.3是业界首个GA支持Windows容器的Kubernetes管理平台,并 ...

  6. Kubernetes2-K8s的集群部署

    一.简介 1.架构参考 Kubernetes1-K8s的简单介绍 2.实例架构 192.168.216.51 master  etcd 192.168.216.53 node1 192.168.216 ...

  7. css条件Hack属性

    <!--[if IE]> <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  8. SpringCloud之Feign负载均衡(四)

    整合Feign pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <arti ...

  9. Spring Boot2 系列教程(十九)Spring Boot 整合 JdbcTemplate

    在 Java 领域,数据持久化有几个常见的方案,有 Spring 自带的 JdbcTemplate .有 MyBatis,还有 JPA,在这些方案中,最简单的就是 Spring 自带的 JdbcTem ...

  10. 5、pytest -- 猴子补丁

    目录 1. 修改函数功能或者类属性 2. 修改环境变量 3. 修改字典 有时候,测试用例需要调用某些依赖于全局配置的功能,或者这些功能本身又调用了某些不容易测试的代码(例如:网络接入).fixture ...