UVA 10976 Fractions Again?!【暴力枚举/注意推导下/分子分母分开保存】

【题意】:给你一个数k,求所有使得1/k = 1/x + 1/y成立的x≥y的整数对。

【分析】:枚举所有在区间【k+1, 2k】上的 y 即可,当 1/k - 1/y 的结果分子为1即为一组解。

【代码】:

#include<bits/stdc++.h>
using namespace std;
int x[10005];
int y[10005];
#define LL long long

int main()
{
    int k,c;
    while(~scanf("%d",&k))
    {
        c=0;
        for(int Y=k+1 ;Y<=k<<1; Y++)
        {
            if((Y*k) % (Y-k)==0)//y是整数
            {
                x[c]=(Y*k)/(Y-k);
                y[c]=Y;
                c++;
            }
        }
        printf("%d\n",c);
        for(int i=0; i<c; i++)
        {
            printf("1/%d = 1/%d + 1/%d\n",k,x[i],y[i]);
        }
    }

}

  

posted @ 2017-12-18 17:01  Roni_i  阅读(163)  评论(0编辑  收藏  举报