[NOIP2001 普及组] 最大公约数和最小公倍数问题
题目描述
输入两个正整数 $x_0, y_0$,求出满足下列条件的 $P, Q$ 的个数:
- $P,Q$ 是正整数。
- 要求 $P, Q$ 以 $x_0$ 为最大公约数,以 $y_0$ 为最小公倍数。
试求:满足条件的所有可能的 $P, Q$ 的个数。
输入格式
一行两个正整数 $x_0, y_0$。
输出格式
一行一个数,表示求出满足条件的 $P, Q$ 的个数。
样例 #1
样例输入 #1
3 60
样例输出 #1
4
提示
$P,Q$ 有 $4$ 种:
- $3, 60$。
- $15, 12$。
- $12, 15$。
- $60, 3$。
对于 $100\%$ 的数据,$2 \le x_0, y_0 \le {10}^5$。
【题目来源】
NOIP 2001 普及组第二题
我的做法:
#include <iostream>
int main()
{
int x, y;
std::cin >> x >> y;
if (y % x != 0)
std::cout << 0;
else
{
int quotient = y / x;
int count = 0;
int currentFactor = 2;
while (quotient > 1)
{
if (quotient % currentFactor == 0)
{
count++;
while (quotient % currentFactor == 0)
quotient /= currentFactor;
}
currentFactor++;
}
std::cout << (1 << count);
}
return 0;
}