水题-洛谷P1209-最大公约数与最小公倍数问题

一个萌新的成长之路

Discription

  • 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数

条件:

1.P,Q是正整数

2.要求P,Q以x0为最大公约数,以y0为最小公倍数.

试求:满足条件的所有可能的两个正整数的个数.

Input&Output

输入格式:

  • 二个正整数x0,y0

输出格式:

  • 一个数,表示求出满足条件的P,Q的个数

Example

Input:

3 60

Output:

4

Solution

  • 本题并不难解,由于x为P,Q的最大公约数,所以枚举x的倍数即可。此外,又有两数的乘积除以其最大公约数等于其最小公倍数,得到判断条件。需要注意的是,由于类似3 60和60 3属于两组解,输出时应乘以2;
  • 代码如下:
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int x, y, ans = 0;
    bool sig = true;
    int gcd(int a, int b)
    {
    if (a < b)swap(a, b);
    if (b == 0)return a;
    else return gcd(b, a%b);
    }
    void sch()
    {
    for (int i = 1;i*x <= y;i++)//枚举倍数
    {
        for (int j = i;j*x <= y;j++)
        {
            if (i*x*j == y&&gcd(i, j) == 1)ans++;//这里做了点处理,i*x*j*x/x可以约去x.
        }
    }
    }
    int main()
    {
    ios::sync_with_stdio(false);
    cin>>x>>y;
    sch();
    cout<<2*ans;
    return 0;
    }
  • 然而本萌新意识到了一个问题:对于类似x=60 y=60的输入,应当只有一组解,实测却输出了2(尽管代码AC了),为了宇宙的和平与正义!瑟(wen)瑟(le)发(da)抖(lao)之后,得到了:

    对于x==y的输入,有且仅有一组解满足条件。

  • 于是,大概特判一发就可以了?
    if(x==y)cout<<1,return 0;
  • Dec,09,2017 Sat
时间: 2024-10-09 09:01:00

水题-洛谷P1209-最大公约数与最小公倍数问题的相关文章

洛谷P1029 最大公约数和最小公倍数问题 [2017年6月计划 数论02]

P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入输出样例 输入样例#1: 3 60 输出样例#1: 4 说明 P,Q有4种 3 60

洛谷 P1029 最大公约数和最小公倍数问题

P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入输出样例 输入样例#1: 复制 3 60 输出样例#1: 复制 4 说明 P,Q有4种

洛谷——P1029 最大公约数和最小公倍数问题

P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入输出样例 输入样例#1: 复制 3 60 输出样例#1: 复制 4 说明 P,Q有4种

洛谷 P1029 最大公约数和最小公倍数问题 Label:Water&amp;&amp;非学习区警告

题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入输出样例 输入样例#1: 3 60 输出样例#1: 4 说明 P,Q有4种 3 60 15 12 12 15 60 3 代码

洛谷P1029 最大公约数和最小公倍数问题

题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入输出格式 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入输出样例 输入样例#1: 3 60 输出样例#1: 4 说明 P,Q有4种 3 60 15 12 12 15 60 3 分析:

(洛谷1029 最大公约数和最小公倍数问题)

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 输入格式: 二个正整数x0,y0 输出格式: 一个数,表示求出满足条件的P,Q的个数 输入样例#1: 3 60 输出样例#1: 4枚举所有的b,看是否满足要求即可~(因为数据的范围比较的小) #include<bits/stdc++.

kmp字符串匹配基础模板题 (洛谷P3375 )

如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了. 输入样例#1: ABABABC ABA 输出样例#1: 1 3 0 0 1 因为要求next的值,所以这里不加优化了把代码进行稍微的改动标记即可 #include<bits/stdc++.h> using namespace std; int next[2000000]; c

洛谷P1209 [USACO1.3]修理牛棚 Barn Repair

题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛,有些没有. 所有的牛棚有相同的宽度. 自门遗失以后,farmer John必须尽快在牛棚之前竖立起新的木板. 他的新木材供应商将会供应他任何他想要的长度,但是吝啬的供应商只能提供有限数目的木板. farmer John想将他购买的木板总长度减到最少. 给出:可能买到的木板最大的数目M(1<= M<

【水】 洛谷U249 匹配

题目描述 Description 输入整数s和两个整数集合A和B,从这A和B中各取一个数,如果它们的和等于s,称为“匹配”.编程统计匹配的总次数 输入输出格式 Input/output 输入格式:第一行为三个整数s(0<s≤10000).n和m(0<n,m≤50000),其中n和m分别表示A和B集合中的元素个数:第二行表示集合A,一共n个整数ai(|ai|≤30000),以空格隔开:第三行表示集合B,一共m个整数bi(|bi|≤30000),以空格隔开输出格式:仅一个正整数,表示总次数 输入输