思路:
题目给出 1 / k 1/k 1/k = = = 1 / x + 1 / y 1/x+1/y 1/x+1/y,即可以推出 1 / k 1/k 1/k < = <= <= 2 / y 2/y 2/y,因此 y y y < = <= <= 2 k 2k 2k,然后通分,就可以得出 1 / k − 1 / x = ( x − k ) 1/k-1/x=(x-k) 1/k−1/x=(x−k) / / / ( x ∗ k ) (x*k) (x∗k),最后判断一下,再用ans累加。
代码:
#include<cstdio>
#include<iostream>
#define rr register
using namespace std;
int n,ans;
int main()
{
scanf("%d",&n);
for(rr int i=n+1;i<=n*2;++i)
if((i*n)%(i-n)==0)//判断
ans++;//累加
printf("%d",ans);//输出。
}