两大数相乘 -- javascript 实现
(function (){ var addLarge = function(n1,n2){
var carry = 0;
var ret = "";
n1=n1.toString();
n2=n2.toString(); var len = Math.min(n1.length,n2.length);
var sln1 = n1.substr(n1.length - len,n1.length );
var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--)
{ var di = parseInt(sln1[i-1]);
var dj = parseInt(sln2[i-1]); ret = (carry + di + dj)>= 10 ? ((carry + di + dj) - 10 + ret) : ((carry+di+dj) + ret); carry = ((carry + di + dj) /10 ) | 0; } if(n1.length != n2.length)
{
if(n1.length > n2.length){
ret = addLarge(n1.substr(0,n1.length-len),carry.toString()) + ret;
}
else{
ret = addLarge(n2.substr(0,n2.length - len),carry.toString()) + ret;
} return ret;
} else{
if(carry> 0){
ret = carry+ ret;
}
return ret.toString();
} }; var multiply = function(n1,n2){
var nstr1 = n1.toString();
var nstr2 = n2.toString(); var carry = 0;
var ret = ""; var di = 0;
var dj = 0;
var dig = "";
for(var i = nstr1.length - 1 ;i >= 0;i--)
{ var tmp = "";
var di = parseInt(nstr1[i]) ;
for(var j = nstr2.length - 1;j >= 0;j--)
{
var dj = parseInt(nstr2[j]);
var r = di*dj + carry; if(r >= 10) {
carry =(r / 10) | 0;
tmp = (r%10) + tmp;
}else{
carry=0;
tmp = r + tmp;
} } if(carry > 0){
tmp = carry.toString() + tmp;
carry = 0;
} if(i < nstr1.length -1)
{
ret = addLarge (ret ,tmp + dig);
}
else{
ret = tmp;
} dig += "0";
} return ret;
}; var a = "1543843275857859592482498432243255";
var b = "1554335546546546662"; console.log(multiply(a,b));
console.log(parseInt(a)*parseInt(b)); })();
两大数相乘 -- javascript 实现的更多相关文章
- 两个大数相乘-Java
两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示.例如S1="7832974972840919321747983209327",S2="19 ...
- 大数相乘算法C++版
#include <iostream> #include <cstring> using namespace std; #define null 0 #define MAXN ...
- java版大数相乘
在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...
- Karatsuba乘法--实现大数相乘
Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...
- 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) { ...
- 1051:A × B problem 大数相乘
给你两个整数,请你计算A × B. 输入 数据的第一行是整数T(1 ≤ T ≤ 20),代表测试数据的组数.接着有T组数据,每组数据只有一行,包括两个非负整数A和B.但A和B非常大,Redraimen ...
- 大数相乘(牛客网ac通过)
2019-05-172019-05-17 大数相乘基本思想: 相乘相加,只不过大于10先不进位到计算完后统一进位 #include <iostream> #include <stri ...
随机推荐
- Coreldraw绘制标准波浪线
Coreldraw中如何绘制标准波浪线? 先画一根直线,单击工具栏中的“互动式工具组”,选择“互动式变形工具”, 再在弹出的属性栏中选择“拉链变形”,在幅度和频率中分别输入波形的波峰 到波底的值.波浪 ...
- LR手动关联参数化问题总结
所谓的关联就是把脚本中某些写死的代码(hard-coded)数据,转变成截取自服务器所送的.动态的.每次都不一样的数据. 一般情况下,比较聪明的服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一 ...
- python类中__unicode__和__str__方法的妙用
在python类中有个__str__的特殊方法,该方法可以使print打印出来的东西更美观,在类里就可以定义,如下代码: class Test: def __init__(self, name, jo ...
- Tao Tao要吃鸡(01背包)
题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了,和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包之后可以多携带h(h为0代表没有装备背包)重量的东 ...
- 七牛云一站式 SSL 证书服务上线,即刻使用最多可省 7 万
2017 年 ,随着谷歌.苹果和腾讯对原 HTTP 的相继限制,全站 HTTPS 已经成为了当下趋势,所以安装 SSL 证书成为网站建设中必不可少的一步. 在 2016 年底,七牛云已经与 Trust ...
- 【字符串+BFS】Problem 7. James Bond
https://www.bnuoj.com/v3/external/gym/101241.pdf [题意] 给定n个字符串,大小写敏感 定义一个操作:选择任意m个串首尾相连组成一个新串 问是否存在一个 ...
- 【Zeller公式计算星期几】HDU 6112 今夕何夕
acm.hdu.edu.cn/showproblem.php?pid=6112 [思路] 公式计算即可,注意特判2月29号 Zeller公式里,计算出的week不能直接模7,要保证week是正数 [A ...
- 转载:K-means聚类算法
转载地址:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html K-means也是聚类算法中最简单的一种了,但是里面包含的思 ...
- BZOJ1700: [Usaco2007 Jan]Problem Solving 解题
每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做. 神奇的DP..竟没想出来.. ...
- msp430项目编程05
msp430中项目---TFT彩屏显示(续) 1.TFT彩屏工作原理 2.电路原理说明 3.代码(静态显示) 4.代码(动态显示) 5.项目总结 msp430项目编程 msp430入门学习