题目描述
输入两个正整数 x_0, y_0x0,y0,求出满足下列条件的 P, QP,Q 的个数:
- P,QP,Q 是正整数。
- 要求 P, QP,Q 以 x_0x0 为最大公约数,以 y_0y0 为最小公倍数。
试求:满足条件的所有可能的 P, QP,Q 的个数。
输入格式
一行两个正整数 x_0, y_0x0,y0。
输出格式
一行一个数,表示求出满足条件的 P, QP,Q 的个数。
样例 #1
样例输入 #1
3 60
样例输出 #1
4
提示
P,QP,Q 有 44 种:
- 3, 603,60。
- 15, 1215,12。
- 12, 1512,15。
- 60, 360,3。
对于 100\%100% 的数据,2 \le x_0, y_0 \le {10}^52≤x0,y0≤105。
【题目来源】
NOIP 2001 普及组第二题
#include<bits/stdc++.h>
using namespace std;
int x,y,num,q,p;
int main(){
scanf("%d%d",&x,&y);
//__gcd最大公约数
int _max=max(x,y);
int _min=min(x,y);
for(int i=_min;i<=_max;i++){
if(x*y%i==0){
if(__gcd(i,x*y/i)==x){
num++;
}
}
}
cout<<num;
return 0;
}
肿么样,是不是很短