分数拆分

发布于 2019-04-16  991 次阅读


题目描述

输入正整数k,找到所有的正整数对(x,y),使得:1/k = 1/x + 1/y,且x>=y。输出有多少组满足要求的x、y。

输入

输入只有一个正整数k。

输出

输出一行一个整数,表示解的组数。

思路

将题目中的方程变式,变成y=(k*x)/(x-k)
这样就可以通过枚举y来得出答案, k+1y<2k

#include 
int main()
{
    int k,x,y,ans=0;
    scanf("%d",&k);
    for(x=(k+1);x<=2*k;x++)
    {
        y=(k*x)/(x-k);
        if((k*x)%(x-k)==0)
        {
            y=(k*x)/(x-k);
            ans++;
        }
    }
    printf("%d",ans++);
}
]]>