分析:简单的暴力枚举题,首先题目中给定x>=y,那么当y最大的时候就是y=2k, 所以说对y进行枚举,范围是(k+1,2*k),还需考虑的一个问题是精度问题, 通分就可以避免这个问题。
AC代码:
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=10000;
int x1[maxn];
int y1[maxn];
int main(){
int k;
while(scanf("%d",&k)==1){
int count1=0;
for(int y=k+1;y<=2*k;y++){
int tmp=y-k;
if((y*k)%tmp==0){
x1[count1]=(y*k)/tmp;
y1[count1++]=y;
}
}
printf("%d\n",count1);
for(int i=0;i<count1;i++)
printf("1/%d = 1/%d + 1/%d\n",k,x1[i],y1[i]);
}
return 0;
}