简单不难(萌新来看)
2024-08-04 18:24:43
发布于:浙江
6阅读
0回复
0点赞
注:此题解仅萌新专用,想直接看代码的往下翻
A78.最大公约数和最小公倍数问题
题目描述
输入两个正整数x0,y0,求出满足下列条件的 P,Q 的个数:
P,Q 是正整数。
要求 P,Q 以 x0为最大公约数,以 y0 为最小公倍数。
试求:满足条件的所有可能的 P, Q 的个数。
先输入
int x,y;
cin>>x>>y;
或者
int x,y;
scanf("%d %d",&x,&y);
这不用我多说了吧
开始枚举
for(int p = x;p<=y;p++){
for(int q = x;q<=y;q++){
}
}
取值范围是x~y。因为p和q的最大公约数不会大于p或者q,最小公倍数也不会小于p或者q。
条件
int cnt = 0;
for(int p = x;p<=y;p++){
for(int q = x;q<=y;q++){
if(/*条件*/)cnt++;
}
}
先加一个计数变量
if(__gcd(p,q)==x&&p*q/__gcd(p,q)==y)cnt++;
使用c++自带的函数求出做大公约数和最小公倍数
输出
cout<<cnt;
无需多讲
AC代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
int cnt = 0;
for(int p = x;p<=y;p++){
for(int q = x;q<=y;q++){
if(__gcd(p,q)==x&&p*q/__gcd(p,q)==y)cnt++;
}
}
cout<<cnt;
return 0;
}
这里空空如也
有帮助,赞一个