算法提高 P1001

时间限制:1.0s 内存限制:256.0MB

提交此题

  

  当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.

输入:

  62773417 12345678

输出:

  774980393241726

这里作者写了两种方法,既然是Java对大数的处理当然是BigInteger会更加好用了

import java.math.BigDecimal;
import java.util.Scanner; public class p1001 { public static void printResult(String A, String B) {
char[] arrayA = A.toCharArray();
char[] arrayB = B.toCharArray();
int len = A.length() + B.length(); int judge = 1; //用于判定A*B最终结果正负,1代表为正,-1表示为负
int enda = 0, endb = 0; //用于指定A和B中最后一个数字的位置(从后往前遍历)
if(arrayA[0] == '-' && arrayB[0] != '-') {
judge = -1;
len = len - 1;
enda = 1;
} else if(arrayA[0] != '-' && arrayB[0] == '-') {
judge = -1;
len = len - 1;
endb = 1;
} else if(arrayA[0] == '-' && arrayB[0] == '-') {
len = len - 2;
enda = 1;
endb = 1;
} int[] result = new int[len];
int a, b;
for(int i = A.length() - 1, tempi = 0; i >= enda;i--,tempi++) {
a = arrayA[i] - '0';
for(int j = B.length() - 1, tempj = 0;j >= endb;j--, tempj++) {
b = arrayB[j] - '0';
result[len-tempi-tempj-2] += (result[len-tempi-tempj-1] + a * b) / 10; //进位操作
result[len-tempi-tempj-1] = (result[len-tempi-tempj-1] + a * b) % 10; //当前位的数
}
}
int i = 0;
while(result[i] == 0 && i < len - 1)
i++; //除去结果前面的所有多余0,此处使用len-1是因为,若结果全为0,输出最后一个0
if(judge == -1)
System.out.print("-");
for(;i < len;i++)
System.out.print(result[i]);
} public static void biginteger(String a,String b){
BigDecimal aa = new BigDecimal(a);
BigDecimal bb = new BigDecimal(b);
System.out.println(aa.multiply(bb).toString());
} public static void main(String[] args) { Scanner in = new Scanner(System.in);
String A = in.next(); //注意,in.next表示遇到空格就不再读入
String B = in.next();
// printResult(A, B);
biginteger(A,B);
} }

Java实现 蓝桥杯 算法提高 p1001的更多相关文章

  1. 蓝桥杯算法提高 P1001(大数乘法)

      算法提高 P1001   时间限制:1.0s   内存限制:256.0MB   当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...

  2. Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)

    试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ...

  3. Java实现 蓝桥杯 算法提高 小X的购物计划

    试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ...

  4. Java实现 蓝桥杯 算法提高 天天向上(DP)

    试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ...

  5. Java实现 蓝桥杯 算法提高 欧拉函数(数学)

    试题 算法提高 欧拉函数 问题描述 老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油: 从1-n中有多少个数与n互质? |||||╭══╮ ┌═════┐ ╭╯让路║═║酱油专用车║ ╰ ...

  6. Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)

    试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ...

  7. Java实现蓝桥杯 算法提高 线段和点

    算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...

  8. Java实现蓝桥杯-算法提高 P1003

    算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ...

  9. Java实现蓝桥杯 算法提高 八皇后 改

    **算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ...

随机推荐

  1. Ubuntu系统make menuconfig的依赖包ncurses安装

    Linux内核或者u-boot进行make menuconfig的时候,如果系统上没有安装ncurses,就会出现以下报错 *** Unable to find the ncurses librari ...

  2. JS作用域和变量提升看这一篇就够了

    作用域是JS中一个很基础但是很重要的概念,面试中也经常出现,本文会详细深入的讲解这个概念及其他相关的概念,包括声明提升,块级作用域,作用域链及作用域链延长等问题. 什么是作用域 第一个问题就是我们要弄 ...

  3. DVWA-File Upload

    0x01 文件上传 File Upload,即文件上传漏洞,通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得可以通过上传webshell获取服务器权限,因此文件上传漏洞带来的危害常常是毁 ...

  4. 在终端输入npm run serve时出现npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法

    在vscode终端使用命令 npm run serve 的时候报错 错误原因在于由于文件 node_modules 太大,在项目上传时有些人会删掉 导致我们下载的项目中缺少这个文件 在尝试把自己项目的 ...

  5. 《学习笔记》Layui-WPF窗体美化

    一睹为快: 1.创建自定义控件,并取名为LayuiWPFStyle 2.在当前目录中创建Fonts和WindowStyle文件加用来存放字体文件和自定义窗体,字体用fontawesome字体当然你们可 ...

  6. 00001- layui 表格的默认工具栏添加自定义按钮

    首先定义table: var tableIns = table.render({ elem:'#businessUserListTable' ,url: ctx+'/business/business ...

  7. Vue element-ui date-picker 结束时间大于开始时间且开始时间小于此刻(转)

    转载自:https://blog.csdn.net/wintersweetGirl/article/details/82461412 <el-form ref="form" ...

  8. 7.2 Go type assertion

    7.2 Go type assertion 类型断言是使用在接口值上的操作. 语法x.(T)被称为类型断言,x代表接口的类型,T代表一个类型检查. 类型断言检查它操作对象的动态类型是否和断言类型匹配. ...

  9. H3C S5500V2交换机误格式化恢复

    一.格式化后,bin文件及视图全部被删除需要联系H3C客服报交换机后面的序列号,然后根据工单中给你的账号密码去H3C官网下载对应的软件包. 二.下载3CDaemon使用TFTP方式将解压出来的.ipe ...

  10. strom_hdfs与Sequence详解

    这片博客主要是讲解storm-hdfs,Squence及它们的trident方法使用,不多说上代码: pom.xml <dependency> <groupId>org.apa ...