80求救
  • 板块题目总版
  • 楼主zheqian3
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/1/4 11:03
  • 上次更新2025/1/4 15:49:25
查看原帖
80求救
1384143
zheqian3楼主2025/1/4 11:03

语法复习--最大公约数2

题目描述

输入两个正整数 x0,y0x_0, y_0,求出满足下列条件的 P,QP, Q 的个数:

  1. P,QP,Q 是正整数。

  2. 要求 P,QP, Qx0x_0 为最大公约数,以 y0y_0 为最小公倍数。

试求:满足条件的所有可能的 P,QP, Q 的个数。

输入格式

一行两个正整数 x0,y0x_0, y_0

输出格式

一行一个数,表示求出满足条件的 P,QP, Q 的个数。

样例 #1

样例输入 #1

3 60

样例输出 #1

4

提示

P,QP,Q44 种:

  1. 3,603, 60
  2. 15,1215, 12
  3. 12,1512, 15
  4. 60,360, 3

对于 100%100\% 的数据,2x0,y01052 \le x_0, y_0 \le {10}^5

代码:

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
    int k;
    while(b){
        k=b;
        b=a%b;
        a=k;
    }
    return a;
}
int lcm(int a,int b){
    return a*b/gcd(a,b);
}
int main(){
    
    int x,y,p=0,q=0,n=0;
    cin>>x>>y;
    if(y%x){
        cout<<0;
        return 0;
    }
    for(p=x;p<=y;p+=x){
        for(q=x;q<=y;q+=x){
            if(gcd(p,q)==x && lcm(p,q)==y) n++;
        }
    }
    cout<<n;
}
2025/1/4 11:03
加载中...