松哥的分数拆分
描述
松哥寒假回家帮他的外甥女做寒假作业,有一道题目是这样的,有一个表达式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
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int k;
while(cin>>k&&k)
{
int flag=0,a,b;
for(a=k+1;a<=2*k;a++)
{
b=(k*a)/(a-k);
if((k*a)%(a-k)==0)
{
printf("1/%d=1/%d+1/%d\n",k,b,a);
flag++;
}
}
if(flag==0)
cout<<"-1"<<endl;
}
return 0;
}