描述
松哥寒假回家帮他的外甥女做寒假作业,有一道题目是这样的,有一个表达式1/k=1/x+1/y.
其中x>=y.松哥想知道对于已知的k,所有满足条件的表达式有哪些,请从小到大列出它们.
输入
多组测试数据。每组测试数据包含一个正整数k(0<k<=5000).
输出
对于每组测试数据输出所有的表达式,若表达式不存在,则输出-1.
输入样例 1
2
12
输出样例 1
1/2=1/6+1/3
1/2=1/4+1/4
1/12=1/156+1/13
1/12=1/84+1/14
1/12=1/60+1/15
1/12=1/48+1/16
1/12=1/36+1/18
1/12=1/30+1/20
1/12=1/28+1/21
1/12=1/24+1/24
题目出现的数值的可能范围是,后值分母:k+1~2k,由于题目要求所以第一个需要求的是k+1,那么前值分母因该是1/(1/(k-1/(k+1)))=(k*(k+1))/(k+1-k),然后如果等式成立的话,前值可以整除后值,根据这个关系就可以求出来了。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int k;
while(cin>>k)
{
int cont=0,a,b;
for(a=k+1;a<=2*k;a++)
{
b=(k*a)/(a-k);
if((k*a)%(a-k)==0)
{
cout<<"1/"<<k<<"=1/"<<b<<"+1/"<<a<<endl;
cont++;
}
}
if(cont==0)
cout<<"-1"<<endl;
}
return 0;
}