UVA_10976: Fractions Again?!

来源:互联网 发布:点对点聊天软件 编辑:程序博客网 时间:2024/06/01 09:08

题意:

  输入一个正整数k,找出所有正整数x>=y,使得1/k=1/x+1/y

分析:

  x>=y推出1/x<=1/y,所以1/k-1/y<=1/y,所以y<=2k;枚举y ;推倒可得x = k×y/(y-k)


#include <iostream>#include <cstdio>using namespace std;const int maxn = 10000+10;int x[maxn];int y[maxn];int main(){int k;while(~scanf("%d",&k)){int cnt = 0;for(int yi=k+1; yi<=2*k; yi++){if(yi*k%(yi-k)==0){x[cnt] = yi*k/(yi-k);y[cnt++] = yi;}}printf("%d\n",cnt);for(int i=0; i<cnt; i++){printf("1/%d = 1/%d + 1/%d\n",k,x[i],y[i]);}}    return 0;}


0 0