求助站外题
查看原帖
求助站外题
1025321
midsummer_zyl楼主2023/9/9 14:55

题目描述

输入正整数 kk,找到所有的正整数 x≤yx \le y,使得:1/k=1/a+1/b1 / k = 1 / a +1 / b

输入格式

若干行,每行一个正整数:kk 。

输出格式

按照 xx 由小到大输出符合条件的等式: 1/k=1/a+1/b1 / k = 1 / a +1 / b。

样例

输入样例

1212

输出样例

1/12=1/13+1/1561/12=1/13+1/156

1/12=1/14+1/841/12=1/14+1/84

1/12=1/15+1/601/12=1/15+1/60

1/12=1/16+1/481/12=1/16+1/48

1/12=1/18+1/361/12=1/18+1/36

1/12=1/20+1/301/12=1/20+1/30

1/12=1/21+1/281/12=1/21+1/28

1/12=1/24+1/241/12=1/24+1/24

#include <bits/stdc++.h>
using namespace std;
int gcd(int x, int y) {
	if (!y) return x;
	return gcd(y, x % y);
}
int main() {
	int k;
	cin >> k;
	double sum = 1.0 / k;
	for (int x = k + 1; x <= k * 2; x++) {
		for (int y = x + 1; y <= k * x / gcd(x, k); y++) {
			double s1 = 1.0 / x, s2 = 1.0 / y;
			if(s1 + s2 == sum) {
				cout << "1/" << k << "=" << "1/" << x << "+1/" << y << endl;
				break;
			}
		}
	}
	return 0;
}

输出少了几个,求助

2023/9/9 14:55
加载中...