题目描述
输入 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;
}

本文探讨了一道数学算法题,输入两个正整数x0,y0,目标是找出所有满足特定条件的正整数对(P,Q),即P和Q的最大公约数为x0,最小公倍数为y0。通过枚举法结合数学公式LCM*GCD=x*y,实现了有效的解决方案。
&spm=1001.2101.3001.5002&articleId=81746831&d=1&t=3&u=7bab781ff33b4483b8fc5e949ec877d0)
351

被折叠的 条评论
为什么被折叠?



