【数论】分数拆分

D e s c r i p t i o n Description

在这里插入图片描述

T r a i n Train O f Of T h o u g h t Thought

首先 1 / k = 1 / x + 1 / y 1/k=1/x+1/y
可以变形为 ( k y ) / ( y k ) (k*y)/(y-k)
然后我们就可以枚举 y y ,然后只要满足 ( k y ) (k*y)%(y-k) 为0时,就是一个满足条件的数对

C o d e Code

#include<iostream>
#include<cstdio>
using namespace std;
long long k,ans;
int main()
{
	scanf("%lld",&k);
	for (long long y=k+1; (k*y)/(y-k)>=y; ++y)
	 if ((k*y)%(y-k)==0) ans++;
	printf("%lld",ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/LTH060226/article/details/89024789