算法笔记_097:蓝桥杯练习 算法提高 P1001(Java)
目录
1 问题描述
当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.
输入:
62773417 12345678
输出:
774980393241726
2 解决方案
此题考查使用字符串来计算具体整数的乘法运算,由于题目说明输入的均为数字,所以代码中不需要做出是否为数字的判断,但要防备一点,输出负数的情况。虽然,测试数据中没有负数情况,但是做题的时候还是要考虑到~
具体代码如下:
import java.util.Scanner; public class Main { public 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 main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
String A = in.next(); //注意,in.next表示遇到空格就不再读入
String B = in.next();
test.printResult(A, B);
}
}
算法笔记_097:蓝桥杯练习 算法提高 P1001(Java)的更多相关文章
- 算法笔记_083:蓝桥杯练习 合并石子(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子 ...
- 算法笔记_107:蓝桥杯练习 算法提高 学霸的迷宫(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要 ...
- 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...
- 算法笔记_076:蓝桥杯练习 结点选择(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值.如果一个点被选择了,那么在树上和它相邻的点都不能被选择.求选出的点的权值和最大是多 ...
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...
- 算法笔记_075:蓝桥杯练习 最短路(Java)
目录 1 问题描述 2 解决方案 2.1 floyd算法解决 2.2 spfa算法解决 1 问题描述 问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环).请你计算从 ...
- 算法笔记_064:蓝桥杯练习 操作格子(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: 1.修改一个格子的权值, 2.求连续一段格子权值和, 3.求 ...
- 算法笔记_081:蓝桥杯练习 算法提高 矩阵乘法(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最 ...
- 算法笔记_106:蓝桥杯练习 算法提高 周期字串(Java)
目录 1 问题描述 2 解决方案 2.1 第一印象解法(80分) 2.2 借鉴网友解法(100分) 1 问题描述 问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有 ...
随机推荐
- 洛谷P1196 [NOI2002] 银河英雄传说
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #includ ...
- Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛
相关链接 UEditor:http://ueditor.baidu.com/website/ 下载地址:http://ueditor.baidu.com/website/download.html# ...
- mtk预装apk 方案公司内置预装apk
mtk预装apk 方案公司内置预装apk 韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha == MTK 预知第三方的APK 流程_yua ...
- Codeforces 538 F. A Heap of Heaps
\(>Codeforces \space 538 F. A Heap of Heaps<\) 题目大意 :给出 \(n\) 个点,编号为 \(1 - n\) ,每个点有点权,将这些点构建成 ...
- [BZOJ 3326] 数数
Link: BZOJ 3326 传送门 Solution: 明显是一道数位$dp$的题目,就是递推式复杂了点 先要求出一个数$\bar{n}$向添加一位后的$\bar{np}$的转化关系 令$res[ ...
- 【线段树】Atlantis
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23181 Accepted: 8644 Descrip ...
- Activity(活动)生命周期--项目测试
一.新建一个Activitylifetest项目,允许Android Studio帮我们自动创建活动和布局,并且勾选Luancher Activity来将创建的活动设置为主活动. 可以参考: http ...
- 最近公共祖先 LCA 倍增法
[简介] 解决LCA问题的倍增法是一种基于倍增思想的在线算法. [原理] 原理和同样是使用倍增思想的RMQ-ST 算法类似,比较简单,想清楚后很容易实现. 对于每个节点u , ancestors[u] ...
- Mysql五种时间格式
YEAR [字节数]:1 [取值范围]:1901~2155 [赋值]: 4位数字 2位字符串:'00'~'69'相当于2000~2069:'70'~'99'相当于1970~1999 2位数字:与2位数 ...
- PatchGuard Disabled V3
https://twitter.com/Fyyre http://www.m5home.com/bbs/thread-5893-1-1.html http://pan.baidu.com/share/ ...