Compute the Maximum Integer Right Triangles Solutions
- 时间:2020-09-10 12:45:51
- 分类:网络文摘
- 阅读:164 次
If p is the perimeter of a right angle triangle with integral length sides, {a,b,c}, there are exactly three solutions for p = 120.
{20,48,52}, {24,45,51}, {30,40,50}
For which value of p ≤ 1000, is the number of solutions maximised?
Maximum Integer Right Triangles Solutions
We can assume bruteforce the shorter side i from 1 to 1000. Then, we can bruteforce the the other side (of the right angle) from i to 1000 – i. The slope k can be computed via Sqrt(i*i+j*j). If three sides sum less or equal to 1000, then we increment the counter for the perimeter.
In the following Javascript, we use a dictionary (or hash map) to store the key-value pairs where key is the perimeter and the value is the number of the solutions when corresponding perimeter is chosen.
And at the end, we have to go through the dictionary to find out the key where the maximum value is stored.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | let count = { }; for (let i = 1; i <= 1000; ++ i) { for (let j = i; i + j <= 1000; ++ j) { let k = Math.floor(Math.sqrt(j * j + i * i)); if (k * k == i * i + j * j) { let p = i + j + k; if (p <= 1000) { if (typeof count[p] === 'undefined') { count[p] = 1; } else { count[p] ++; } } } } } const keys = Object.keys(count); let cnt = 0; let p = 0; for (let key of keys) { if (count[key] > cnt) { cnt = count[key]; p = key; } } console.log(p); |
let count = {
};
for (let i = 1; i <= 1000; ++ i) {
for (let j = i; i + j <= 1000; ++ j) {
let k = Math.floor(Math.sqrt(j * j + i * i));
if (k * k == i * i + j * j) {
let p = i + j + k;
if (p <= 1000) {
if (typeof count[p] === 'undefined') {
count[p] = 1;
} else {
count[p] ++;
}
}
}
}
}
const keys = Object.keys(count);
let cnt = 0;
let p = 0;
for (let key of keys) {
if (count[key] > cnt) {
cnt = count[key];
p = key;
}
}
console.log(p);–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:玩具店的玩具每当卖出一半时 到底谁在说假话 46个人吃了100个馒头成人和小孩各有多少人 蜘蛛蜻蜓蝉各有多少只 鸡兔同笼共306只脚问鸡兔各几只 简算题:(1/8+1/24+1/48+1/80+1/120+1/168+1/224+1/288)×128 奥数题:狗跑5步的时间马跑3步 数学题:甲乙丙三桶油 数学题:将一块圆锥形糕点沿着高切成两半 数学题:这包糖果至少有多少颗
- 评论列表
-
- 添加评论