【题解】洛谷P1029最大公约数和最小公倍数问题[NOIP2001普及] 最大公约数+枚举

题目链接

题目描述

输入2个正整数x0,y0 (2≤x0 <100000,2≤y0<=1000000),求出满足下列条件的P,Q的个数

条件:

P,Q是正整数

要求P,Q以x0为最大公约数,以y0为最小公倍数.

试求:满足条件的所有可能的2个正整数的个数.

输入输出格式

输入格式:
2个正整数x0,y0

输出格式:
1个数,表示求出满足条件的P,Q的个数

输入输出样例

输入样例#1:
3 60
输出样例#1:
4

说明

P,Q有4种

1、3,60
2、15,12
3、12,15
4、60,3


根据gcd(a,b)lcm(a,b)=ab,枚举一下就行了

#include
typedef long long ll;
ll gcd(ll x,ll y){return y?gcd(y,x%y):x;}
int main()
{
	ll x,y,mul,cnt=0;
	scanf("%lld%lld",&x,&y);
	mul=x*y;
	for(ll i=1;i*i<=mul;i++)
	if(mul%i==0&&gcd(i,mul/i)==x)cnt+=2;
	printf("%lld\n",cnt);
	return 0;
}

总结

你可能感兴趣的:(NOIP,洛谷,枚举,最大公约数)