Project Ruler 算法练习之除数问题

问题描述:

The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplify it may incorrectly believe that49/98 = 4/8,
which is correct, is obtained by cancelling the 9s.

We shall consider fractions like, 30/50 = 3/5, to be trivial examples.

There are exactly four non-trivial examples of this type of fraction, less than one in value, and containing two digits in the numerator and denominator.

If the product of these four fractions is given in its lowest common terms, find the value of the denominator.

思路:

1.找到1位数的所有分数

2.找到两位数的分数,把分子分母有重叠的部分去掉,如果相等,存入数组

3.对比两个数组的结果,找到相同的

javascript实现:

(function(){

  var dig = function (m,n){
  var arr = new Array();
  for(j=m+1;j<n;j++){
 for(var i = m;i < j ;i++){
 arr.push({i:i,j:j});
}
 }
return arr;
 }

var filter = function(arr){
var ret  =new Array();
for(var i = 0; i < arr.length ; i++){

var strN = arr[i].i.toString();
var strM = arr[i].j.toString();

if(strN.indexOf(strM[0]) != -1&&strM[0]!='0'){
if(strN[0] == strM[0] && parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[1])){ret.push({i:strN[1],j:strM[1],ori:strN+"/"+strM});}
else if(strN[1] == strM[0] && parseInt(strN)/parseInt(strM) == parseInt(strN[0]) / parseInt(strM[1])){ret.push({i:strN[0],j:strM[1],ori:strN+"/"+strM});}
}

else if(strN.indexOf(strM[1]) != -1&&strM[1]!='0'){
if(strN[0] == strM[1]&& parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[0])){ret.push({i:strN[1],j:strM[0],ori:strN+"/"+strM});}
else if (strN[0] == strM[1]  && parseInt(strN)/parseInt(strM) == parseInt(strN[1]) / parseInt(strM[0])){ret.push({i:strN[1],j:strM[0],ori:strN+"/"+strM});}
}

}

return ret;
}

var ret1 = dig(1,10);
var ret2= filter(dig(10,100));
console.log(ret2);

for(var j = 0 ;j < ret1.length ;j++){
for(var i = 0;i < ret2.length; i++){
//console.log(ret2[i].i + "/" + ret2[i].j + " = " + ret1[j].i + "/" + ret1[j].j);
if(parseInt(ret2[i].i) / parseInt(ret2[i].j) == parseInt(ret1[j].i) / parseInt(ret1[j].j)){
console.log(ret2[i].ori + " = " + ret1[j].i + "/" + ret1[j].j);
}

}
}

})();

Project Ruler 算法练习之除数问题,布布扣,bubuko.com

时间: 2024-10-29 19:05:42

Project Ruler 算法练习之除数问题的相关文章

Project Ruler 算法练习之 10 进制 转 2进制 以及数字对称

问题描述: The decimal number, 585 = 10010010012 (binary), is palindromic in both bases. Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2. (Please note that the palindromic number, in either base, may not inc

Project Ruler 算法练习之 Truncate Prime

问题描述: The number 3797 has an interesting property. Being prime itself, it is possible to continuously remove digits from left to right, and remain prime at each stage: 3797, 797, 97, and 7. Similarly we can work from right to left: 3797, 379, 37, and

Team Foundation Server 2013 with Update 3 Install LOG

[Info   @10:14:58.155] ====================================================================[Info   @10:14:58.163] Team Foundation Server Administration Log[Info   @10:14:58.175] Version  : 12.0.30723.0[Info   @10:14:58.175] DateTime : 10/03/2014 18:1

畅通project续HDU杭电1874【dijkstra算法 || SPFA】

http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案要比还有一些方案行走的距离要短非常多.这让行人非常困扰. 如今,已知起点和终点,请你计算出要从起点到终点.最短须要行走多少距离. Input 本题目包括多组数据.请处理到文件结束. 每组数据第一行包括两个正

HDoj-1874-畅通project续-Dijkstra算法

畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28356    Accepted Submission(s): 10275 Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,

hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)

还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26860    Accepted Submission(s): 11985 Problem Description 某省调查乡村交通状况,得到的统计表中列出了随意两村庄间的距离.省政府"畅通project"的目标是使全省不论什么两个村庄间都能够实现公路交

从软件project的角度写机器学习3——主要监督学习算法的project性分析

主要机器学习算法的project适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.只是这件事情,也仅仅是在机器学习的深度上进一步拓展,而机器学习的广度(也即project化实践)上,仍然没有什么突破性的理论或实践,用的领域继续用,不用的领域依旧不用. project性分析的作用 project上的琐事 机器学习的使命是使计算机强大的运算能力和存储能力转化为推演能力.能转化是一方面.转化的效率则是还有一方面.科研性质的AlphaGo,拥有近乎无限的计算资

笔试真题解析 ALBB-2015 算法project师实习生机试

1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0. [解析] 计算N.下3进制结果末尾有多少个0,事实上就是计算3进制中的3被进位多少次,仅仅要将N!因式分解成3^m*other.m就是答案.技巧性的解法就是m=N/3+N/(3^2)+N/(3^3)....+N(3^k) (k<=N/3) -- N=30:N/3+N/9+N/27=14. 2.小赵和小钱二人分别从寝室和图书馆同一时候出发.相向而行.过了一段时间后二人在中途相遇.小赵继续向图

畅通project再续 HDU杭电1875 【Kruscal算法 || Prim】

Problem Description 相信大家都听说一个"百岛湖"的地方吧.百岛湖的居民生活在不同的小岛中.当他们想去其它的小岛时都要通过划小船来实现.如今政府决定大力发展百岛湖.发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米.也不能大于1000米.当然,为了节省资金,仅仅要求实现随意2个小岛之间有路通就可以.当中桥的价格为 100元/米