[编程题] 大整数相乘
来源:互联网 发布:校花级别的多漂亮知乎 编辑:程序博客网 时间:2024/06/05 17:06
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。
输入描述:
空格分隔的两个字符串,代表输入的两个大整数
输出描述:
输入的乘积,用字符串表示
输入例子1:
72106547548473106236 982161082972751393
输出例子1:
70820244829634538040848656466105986748
import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String s = sc.nextLine(); String[] s1 = s.split(" "); System.out.println(multiply(s1[0],s1[1])); } } private static String multiply(String s1,String s2){ String res = ""; if(s1.length() == 0 || s2.length() == 0) return "0"; int len = s2.length(); StringBuilder temp = new StringBuilder(); for(int i = len - 1;i >=0;i--){ temp = multiplyCore(s1,s2.charAt(i)); for(int j =len-1-i;j>0;j--){ temp.append('0'); } res = add(res,temp.toString()); } return res; } private static StringBuilder multiplyCore(String s1,char c){ StringBuilder sb = new StringBuilder(); int jinwei = 0; int v = 0; for(int i = s1.length() - 1;i >= 0;i--){ v = (s1.charAt(i) - '0') * (c - '0')+ jinwei; jinwei = v / 10; v = v % 10; sb.insert(0,v); } if(jinwei > 0){ sb.insert(0,jinwei); } return sb; } private static String add(String s1,String s2){ int i = s1.length() - 1; int j = s2.length() - 1; int jinwei = 0; int v = 0; StringBuilder sb = new StringBuilder(); for(;i >= 0 && j>=0;i--,j--){ v = jinwei + (s1.charAt(i) - '0') + (s2.charAt(j) - '0') ; jinwei = v / 10; v = v % 10; sb.insert(0,v); } while(j >= 0){ v = jinwei + (s2.charAt(j) - '0') ; jinwei = v / 10; v = v % 10; sb.insert(0,v); j--; } while(i >= 0){ v = jinwei + (s1.charAt(i) - '0') ; jinwei = v / 10; v = v % 10; sb.insert(0,v); i--; } if(jinwei > 0){ sb.insert(0,jinwei); } return sb.toString(); }}
阅读全文
0 0
- [编程题] 大整数相乘
- 大整数相乘问题
- 大整数相乘算法
- 大整数相乘算法!
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 两个大整数相乘
- B
- 牛客网编程-二叉树的深度(java)
- Java线程基本概念及操作
- 使用eclipse时在jsp中使用el表达式报错的解决方法
- “智能高清”技术设想
- [编程题] 大整数相乘
- POJ 2080 Calendar
- 第二章摘抄笔记(一)The C Programming Lanuage
- 总结C语言指针部分的知识
- Emmet的简写演示
- 基础整理-标识符
- D
- python中汉诺塔问题的求解
- UVAlive-6577 Binary Tree(递推+找规律)