原文链接: 一个比较巧妙的求正方形面积的数学题
上一篇: windows10 几个好用的软件
原题如下
先试了解析法, 发现复杂度很高, 然后用js做近似
于是想着正方形是相似的, 找到一个边长为1的满足上面条件的点, 然后做比例缩放就行了
结果居然不是整数, 不过和精确解差的不多
import { mean } from "lodash-es";
const size = 5000;
const dis = (x1, y1, x2, y2) => ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5;
const equal = (i) => Math.abs(i) < 0.01;
const list = [];
for (let i = 0; i <= 0.5; i += 1 / size) {
for (let j = 0; j <= 0.5; j += 1 / size) {
const a = dis(i, j, 0, 0);
const b = dis(i, j, 0, 1);
const c = dis(i, j, 1, 0);
// a:b:c = 4:7:9
if (equal(b / a - 7 / 4) && equal(c / a - 9 / 4)) {
const area = (4 / a) ** 2;
console.log(i, j, area);
list.push(area);
}
}
}
// 104.59401926019143 104.59797974644665
console.log(
mean(list),
4 ** 2 + 7 ** 2 - 2 * 4 * 7 * Math.cos((3 / 4) * Math.PI)
);
看了下答案, 原来是凑数凑出来的题...不过思想很厉害, 利用旋转拼了一个四边形, 然后对这个特殊的四边形求对角线