题目描述
输入 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
思路:利用 LCM*GCD=x*y 枚举即可
源代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<ctime>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 50001
#define MOD 1e9+7
#define E 1e-6
#define LL long long
using namespace std;
int GCD(int a,int b)
{
return b==0?a:GCD(b,a%b);
}
int main()
{
int x,y;
cin>>x>>y;
int temp=x*y;
int cnt=0;
for(int i=x;i<=y;i++)
{
if(temp%i==0)
{
int maxx=max(i,(int)(temp/i));
int minn=min(i,(int)(temp/i));
int gcd=GCD(maxx,minn);
if(gcd==x)
cnt++;
}
}
cout<<cnt<<endl;
return 0;
}