输入正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y。
样例输入:
2
12
样例输出:
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
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
【分析】只需要在2*k范围内枚举即可
#include<stdio.h>
#include<stdlib.h>
int main()
{
int k;
while(~scanf("%d",&k)){
int count=0;
for(int i=k+1;i<=2*k;i++){
if((k*i)%(i-k)==0) count++;
}
printf("%d\n",count);
for(int y=k+1;y<=2*k;y++){
if((k*y)%(y-k)==0){
int x=(k*y)/(y-k);
printf("1/%d = 1/%d + 1/%d\n",k,x,y);
}
}
}
return 0;
}
本文探讨了如何通过枚举方法在给定的范围内找出所有满足1/k = 1/x + 1/y的正整数x和y。通过实例演示,展示了在不同k值下符合条件的x和y的组合。
1596

被折叠的 条评论
为什么被折叠?



