9.11做题记录

练习构造题的一天

做构造题让我感觉自己像个zz

CF743C Vladik and fractions

题面翻译

题目描述
请找出一组合法的解使得\(\frac {1}{x} + \frac{1}{y} + \frac {1}{z} = \frac {2}{n}\)成立
其中\(x,y,z\)为正整数并且互不相同

输入
一个整数\(n\)
输出
一组合法的解\(x, y ,z\),用空格隔开
若不存在合法的解,输出\(-1\)

数据范围
对于\(100\)%的数据满足\(n \leq 10^4\)
要求答案中\(x,y,z \leq 2* 10^{9}\)

样例 #1

样例输入 #1

3

样例输出 #1

2 7 42

样例 #2

样例输入 #2

7

样例输出 #2

7 8 56

提示

对于\(100\)%的数据满足\(n \leq 10^4\)
要求答案中\(x,y,z \leq 2* 10^{9}\)

\(solution\)

本蒟蒻练习的第一道构造题目。

\[\frac {1}{x} + \frac{1}{y} + \frac {1}{z} = \frac {2}{n} \]

我们发现右边的 \(\frac{2}{n}\) 很有违和感,所以我们把右边变为 \(\frac{1}{n}\)

所以 \(x,y,z\) 中必然存在一个数等于 \(n\)

我们可以假设 \(z=n\) ,那么我们的式子变为:

\[\frac{1}{x}+\frac{1}{y}=\frac{1}{n} \]

根据裂项公式,我们知道:

\[\frac{1}{n}=\frac{1}{n+1}+\frac{1}{n \times (n+1)} \]

所以我们会有一组固定的解 \(\{n,n+1,n \times (n+1)\}\)

\(n \le 1\) 时无解,因为 \(x,y,z\) 都是正整数,所以不可能计算出负数。

\(n=1\) 时无解是因为 \(n=1\)\(n+1=n \times (n+1)\)

\(code\)

#include<iostream>
using namespace std;
int n;
int main()
{
	scanf("%d",&n);
	if(n<=1)  printf("-1");
	else
		printf("%d %d %d",n,n+1,n*(n+1));
	return 0;
}
posted @ 2022-09-11 19:17  respect_lowsmile  阅读(14)  评论(0编辑  收藏  举报