在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的

用java搞了一个版本

这里说一下思路

将数字已字符串形式接收,转换成int[]整型数组,然后num1[],num2[]依次相乘,结果保存到result[]中

其他注意的在注释中有说明

package com.gxf.test;

import java.util.Scanner;

public class BigDataMultiply {

public static void main(String[] args) {

final int N = 100;//最大为100位数字相乘

Scanner scanner = new Scanner(System.in);

int num1[] = getNum(scanner);//保存第一个数12345

int num2[] = getNum(scanner);//保存第二个数12345

int result[] = new int[2 * N];

//第一个数12345每一位乘以第二个数12345的每一位,得到的结果放到result[]中

//注意5乘以每一位数字保存在result[0] [1] [2] [3] [4]中

//4乘以每一位数字时要加上[1] [2] [3] [4]中的值

for(int i = 0; i < num1.length; i++){

for(int j = 0; j < num2.length; j++){

result[i + j] += num1[i] * num2[j];

}

}//得到的结果还需进位和移位处理

//进位和移位处理

for(int i = 0; i < 2 * N - 1; i++){

result[i + 1] += result[i] / 10;

result[i] = result[i] % 10;

}

//找出结果长度

int length = 2 * N -1;

while(result[length] == 0)

length--;

//输出结果 注意先输出高位 最高位保存在数组的高下标中

for(int i = length; i >= 0; i--){

System.out.print(result[i] + " ");

}

scanner.close();

}

public static int[] getNum(Scanner scanner){

final int N = 100;

int num[] = new int[N];

char array_char[];

String str_num = "";

//Scanner scanner = new Scanner(System.in);//用于接收输入

str_num = scanner.next();

array_char = str_num.toCharArray();//字符串12345已经转换成字符数组

//将字符数组转换成Int数组

int length = array_char.length;

for(int i = 0; i < array_char.length; i++){

num[length - i - 1] = array_char[i] - '0';//这里注意保存的位置 高位保存在数组高下标中 低位保存在数组低下标中

//因为后面计算的时候是从低下标中的

//num[i] = array_char[i]

}

//scanner.close();

return num;

}

}

ps:为什么这里result[]大小是2*N,假设两个数是3位数,如565 * 898不可能大过1000 * 1000,而1000 * 1000的位数刚好是 2 * 3 = 6位

用Java进行大数处理(BigInteger)-hdu1042

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目描述: 代码实现: import java.util.Scanner; import jav ...

POJ 2389&Tab;Bull Math&lpar;水~Java -大数相乘)

题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

Java实现大数相加、相乘(不使用BigInteger)

大数相加: package algorithm; //使用BigInteger类验证 import java.math.BigInteger; public class BigAdd { public ...

大数相乘算法C&plus;&plus;版

#include #include using namespace std; #define null 0 #define MAXN ...

Java 大数相乘、大数相加、大数相减

思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...

华为上机测试题(大数相乘-java)

PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...

Java BigInteger&lpar;大数,ACM比赛专用)

用c或者C++处理大数比较麻烦,于是决心学习一下JAVA中大数运算. 先下载一个eclipse,具体的用法去问度娘吧 JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮 ...

Java实现大数乘法运算

基本思路:将输入的两个大数以字符串的形式存储,然后转化成整型数组存储,通过整型数组进行乘法运算(采用分治的思想) 即乘法分配律,如AB*CD=AC(AD+BC)BD,将两个数组逐位相乘的结果对位存放在 ...

排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

随机推荐

&lbrack;C&num;&rsqb; C&num; 知识回顾 - 表达式树 Expression Trees

C# 知识回顾 - 表达式树 Expression Trees 目录 简介 Lambda 表达式创建表达式树 API 创建表达式树 解析表达式树 表达式树的永久性 编译表达式树 执行表达式树 修改表达 ...

python拆分CANLog

通过CANOE 导出的log通常有很多个ID的数据,如何才能找到某一个ID下的特殊的信号?利用python可以简单的进行这个步骤,代码如下: 说明: 最终的效果是将log信息,分不同的ID进行拆分,并 ...

Contains Duplicate III 下标范围&lt&semi;&equals;k 值范围&lt&semi;&equals;t

set妙用 1.维护一个大小最大位k的set set中数据是有顺序的 2.每次新加一个数据,只需要比较该数据加入 有没有带来变化 3.找到 >= 新数据-t的数据对应的迭代器 pos 4.如果找 ...

double保持精度,防止小数点后数字的丢失的小方法

一般情况下,输入带小数点的字面值,编译器会把它解析成double 类型. 例如:一个字面值被直接放到代码中,由于带小数点所以,默认值为double类型   输出结果是:1.12345678912345 ...

制作linux内核安装包

实验基于Centos 6.2 升级linux内核 直接在一个有编译环境的设备上,编译升级内核很简单. make menuconfig 或者 拷贝现有系统的.config文件 修改.config文件  ...

SSO(单点登录)

自己动手写SSO(单点登录) 标签: sso 登录 | 发表时间:2014-03-02 15:01 | 作者: 分享到: 出处:http://www.iteye.com SSO在我们的应用中非常常见, ...

PHP查看当前端口号

水题 ZOJ 3869 Ace of Aces

题目传送门 水题,找出出现次数最多的数字,若多个输出Nobody //#include //using namespace std; #include &l ...

TTTAttributedLabel使用介绍(转)

TTTAttributedLabel 库地址 https://github.com/TTTAttributedLabel/TTTAttributedLabel 可以实现电话  地址  链接自动查找显示 ...

c&plus;&plus; ,protected 和 private修饰的构造函数

c++ protected 和 private修饰的构造函数: 1.在类的外部创建对象时,不能调用protected或private修饰的构造函数. 2.当子类中的构造函数调用父类的private构造 ...

超大数相乘的java代码,java版大数相乘相关推荐

  1. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  2. 圣诞快乐java代码,java版的下雪,大家圣诞快乐

    everybody, Merry Christmas ! 里面有播放音乐,太大了上传不了,想看效果的把播放音乐的代码注释掉就好了. 不好意思,图片忘记了,现补上了,不过图片是网上随便找的图扣的,不是很 ...

  3. java调用子系统代码_深入理解JAVA虚拟机-Idea远程执行本地Java代码 - Java 技术驿站-Java 技术驿站...

    今天在看深入理解JAVA虚拟机的9.3节,作者实现了一个远程执行功能.这个功能可以在远程服务器中临时执行一段程序代码,而去不依赖jdk版本,不改变原有服务端程序的部署,不依赖任何第三方库,不入侵原有的 ...

  4. 设计一个聊天窗口java代码,Java 设计的聊天程序-完整代码

    [实例简介] 这是一个Java 课程设计,模仿MSN.QQ等的界面.压缩包内有源码跟使用方法! [实例截图] [核心代码] Java设计的聊天程序-完整源码 └── Java 设计的聊天程序-完整源码 ...

  5. java存档_存档 Java 代码 - Java 入门教程

    目标 了解如何在 Eclipse 中创建 JAR 文件 能够将第三方代码导入您的 Java 应用程序 创建 JAR 现在您已经了解了如何编写 Java 应用程序,您可能想知道如何打包它们,以便其他开发 ...

  6. 最简判断闰年java代码,java判断闰年代码

    java判断闰年代码 java教程网[简单的一道题--用if-else 语句判断某年份是否为闰年]代码如下: package com.wenzhi;O网页链接 Python 代码:(java类似,算法 ...

  7. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  8. md5视频加密 java代码,Java实现MD5加密及解密的代码实例分享

    基础:MessageDigest类的使用 其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣: /** * 对字符串md5加密 * * @param st ...

  9. hello world的Java代码,Java语言实现hello world代码

    参考https://blog.csdn.net/yilovexing/article/details/53256713 24种编程语言的Hello World程序 Java 文档注释 Java 支持三 ...

最新文章

  1. 机器学习预测农民是否可以得到贷款
  2. Visual Studio 2017常用快捷键(小白入)
  3. Lesson13【加餐】 损失函数的随机创建现象详解
  4. 如何为SAP Cloud for Customer Lead页面配置自定义的Source字段
  5. char *a 与char a[] 的区别和char** argv与char *argv[]区别
  6. apache camel_使用WildFly 8在Java EE7中自举Apache Camel
  7. easyui datagrid java_java_easyui体系之DataGrid(4)[转]
  8. [转载]Zookeeper开源客户端框架Curator简介
  9. HDU 4857 逃生 (反向拓扑排序 容器实现)
  10. vuex mutations_Vuex 的基本知识总结
  11. html5页面的手势,HTML5单页面手势滑屏切换如何实现
  12. 基于汉语短文本对话的立场检测系统理论与实践
  13. php 魔方加密还原,PHP魔方解密 - osc_80l29rkk的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. opencv subtract函数内存泄漏
  15. [Excel]常用技巧
  16. Android8.0替换默认静态壁纸
  17. C++算法篇:DFS超详细解析(2)--- tarjan算法求无向图割边
  18. c语言输出国旗图形,大家来看看国旗杂画
  19. 大三小学期进阶课程第十二课:apollo地图采集方案
  20. gitlab出现502错误解决方案 gitlab修改端口

热门文章

  1. 海南计算机报名流程,海南2020年9月一级计算机报名多少步骤
  2. DBVisualizer 中文显示乱码
  3. 为什么下载那种小电影时,经常会卡在99%?
  4. 针对自动跳转到2345导航页流氓行为的解决办法
  5. [附源码]java毕业设计本科毕业设计过程管理系统
  6. [附源码]java毕业设计教务系统
  7. 硬盘坏块监测linux,Linux上检测硬盘上的坏道和坏块
  8. 树袋熊无线网络打印服务器,树袋熊
  9. weka遇到java.util.zip.ZipException: invalid LOC header (bad signature)
  10. wp版微信定位服务器,WP Weixin 微信登录服务连接器