Description
对于任意一个整数k,请找出在 x>=y 时有多少种情况使得 1/k = 1/x + 1/y,x 与 y 均为正整数。
Input
输入一个整数n,代表要被分解的整数
Output
输出有多少种情况
Sample Input
1
2
3
Sample Output
1
2
2
首先可以知道 k < y <= 2*k,因为y < k 时,1/y > 1/k,与题意不服
而 y > 2*k 时,有 x > 2*k -> 1/y + 1/x < 1/(2*k) + 1/(2*k),与题意不服。
根据式子课化简得到 x = (k*y) / (y - k),此时枚举 y 的值,当(k*y)/(y - k)是整数就是符合条件的答案。
答案:
代 码 如 下 :
#include <iostream> #include <cstdio>
using namespace std; int main(void)
{
int k; while(scanf("%d",&k)!=EOF)
{
int ans = 0;
for(int i=k+1;i<=2*k;i++){ if(!((i * k) % (i - k))) ans++;} printf("%d\n", ans);
}
return 0;
}