2013\National _C_C++_C\2.埃及分数

古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式。

这里,a 和 b 必须是不同的两个整数,分子必须为 1

比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):

1/8 + 1/120
1/9 + 1/45
1/10 + 1/30
1/12 + 1/20

那么, 2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。

请严格按照要求,通过浏览器提交答案。
注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字

Solve

1/a + 1/b = c/d
1 + a/b = ac/d
b + a = abc/d
ad + bd = abc

我们让a<b,那么1/a肯定要小于c/d,也就是2/45,即可推出22.5<a<45,暴力枚举b即可。

Code

if __name__ == '__main__':
	ans, c, d = 0, 2, 45
	for a in range(22, 46):
		for b in range(a + 1, 10000):
			if a * d + b * d == a * b * c:
				print(f'1/{a} + 1/{b} = {c}/{d}')
				ans += 1
	print(ans)

1/23 + 1/1035 = 2/45
1/24 + 1/360 = 2/45
1/25 + 1/225 = 2/45
1/27 + 1/135 = 2/45
1/30 + 1/90 = 2/45
1/35 + 1/63 = 2/45
1/36 + 1/60 = 2/45

Answer:7

猜你喜欢

转载自blog.csdn.net/weixin_43336281/article/details/107681069