程序设计与分析之分治法(1)--超长整数计算
来源:互联网 发布:中国软件外包印度差距 编辑:程序博客网 时间:2024/06/05 03:26
//分治://大整数相乘//// num1=AB = A*10^(N/2)+B// // num2=CD = C*10^(N/2)+D//// num1*num2// =(A*10^(N/2)+B)*(C*10^(M/2)+D)// = **A*C*10^0.5*(M+N)+B*D+A*D*10^(N/2)+B*C*10^(M/2)**// //// num 为偶数位:// num = abcd // num 为奇数位:// num = abcde n/2 = 2//public class Main { public static void main(String[] args) { String s1 = "150"; String s2 = "44"; System.out.println(Mutiply(s1,s2)); } static String Mutiply(String s1,String s2){ if (s1.length()*s2.length()<32) { return String.valueOf( Double.parseDouble(s1)*Double.parseDouble(s2) ); } int s1_Length = s1.length(); int s2_Length = s2.length(); String s1_subString_front = s1.substring(0,s1.length()/2); String s1_subString_late = s1.substring(s1.length()/2,s1.length()); String s2_subString_front = s2.substring(0,s2.length()/2); String s2_subString_late = s2.substring(s2.length()/2,s2.length()); return String.valueOf( Double.parseDouble(Mutiply(s1_subString_front,s2_subString_front))* Math.pow(10,(s1_Length+s2_Length)/2) +Double.parseDouble(Mutiply(s1_subString_front,s2_subString_late))* Math.pow(10,s1_Length/2) +Double.parseDouble(Mutiply(s1_subString_late,s2_subString_front))* Math.pow(10,s2_Length/2) +Double.parseDouble(Mutiply(s1_subString_late,s2_subString_late)) ); }}
0 0
- 程序设计与分析之分治法(1)--超长整数计算
- 超长整数加法计算
- Algorithm Gossip: 超长整数计算(大数计算)
- 算法原理与分析之分治法
- 大数运算(超长整数运算)算法的简单分析
- 递归与分治之整数划分
- 008-大整数乘法-分治法-《算法设计技巧与分析》M.H.A学习笔记
- 实用算法的分析与程序设计——分治算法(归并排序,快速排序)
- 超长整数的输入与输出
- 超长整数的基础运算 之小结
- * 期末考试 编程题#4:计算整数平方和(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 递归与分治策略之大整数的乘法
- 算法设计与分析之分治思想
- 大整数的乘法(分治法)
- 超长整数运算(大数运算)
- 7 超长整数运算(大数运算)
- 算法设计与分析学习-分治法1
- 递归分治算法之整数划分问题(Java版本)
- php flush类输出缓冲剖析
- FZU 2150 Fire Game (暴力BFS)
- 22-UICollectionView
- Swift开发教程--如何去掉UITableViewController黑色线条
- #27 Remove Element
- 程序设计与分析之分治法(1)--超长整数计算
- 数据结构之二叉树(遍历、建立、深度)
- hdu 1863 畅通工程
- Cookie-网站登录-下次自动登录
- 23-团队分工 Storyboard
- 股票学习25
- 我的关于编程中调用系统库的过程始终不理解???这篇文件解析了pe文件的结构
- swift中的闭包
- 深入理解java垃圾回收机制