首页 > 其他分享 >4. [2001年NOIP普及组] 最大公约数和最小公倍数问题

4. [2001年NOIP普及组] 最大公约数和最小公倍数问题

时间:2022-08-21 21:22:08浏览次数:104  
标签:return NOIP 公倍数 long int 最大公约数 2001 include

题目链接(码学堂,数据弱)

题目链接(洛谷,数据极强)

摘要:

1.P,Q是正整数(unsigned)
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.

 

分析1:

暴力枚举,看这两个数的最大公约数和最小公倍数是否与题目一样

 1 #include<iostream>
 2 #include<cmath>
 3 #include<cstdio> 
 4 using namespace std;
 5 long long p,q;
 6 long long ans;
 7 long long lcm(int x,int y)
 8 {
 9     long long  xx=x/p;
10     long long  yy=y/p;
11     return xx*yy*p;
12 }
13 long long gcd(long long x,long long y)
14 {
15     if(x%y==0) return y;
16     else return gcd(y,x%y);
17 }
18 int main()
19 {
20     cin>>p>>q;
21     for(long long i=0;i<=q;i+=p)//优化细节1:跳跃式枚举 
22         for(long long j=0;j<=q;j+=p)
23             if(lcm(i,j)==q&&gcd(i,j)==p)
24             {
25                 ans++;
26                 if(i==j) ans--;//注意位置!//平方的特殊情况! 
27             }
28     cout<<ans;
29     return 0;
30  } 

 

标签:return,NOIP,公倍数,long,int,最大公约数,2001,include
From: https://www.cnblogs.com/xdzxxintong/p/16610896.html

相关文章

  • [2015年NOIP普及组] 金币
    #include<iostream>intmain(){intstep=1;intcoin=1;intnow;std::cin>>now;intcount=0;intwalk=0;for(intday=1;day<=now;da......
  • 3. [2011年NOIP提高组] 铺地毯
    题目链接本题精彩所在:数据范围数据范围是x,y分别到达了100000,开二维数组无疑会空间爆炸因此,我们可以通过他给予的坐标范围(围成一个四边形)通过逆序判断坐标是否越界,来做......
  • [NOIP2001 提高组] 一元三次方程求解
    [NOIP2001提高组]一元三次方程求解题目描述:这道题就是一道简单的暴力枚举,做的时候要注意一下double精度,当然用二分做的话肯定会更好(虽然我也不会)代码如下:#include<......
  • [2001年NOIP普及组] 最大公约数和最小公倍数问题
    p*q等于x0*y0。可以枚举到x0*y0中能被x0*y0整除的数,如果这个数与另一个这个数与它的积是x0*y0的数的最大公因数是x0或最小公倍数是y0,那这个数不是p就是q。每枚举出这样一个......
  • 2. [NOIP2001 提高组] 一元三次方程求解
    试题描述:输入一行,4个实数a,b,c,d输出一行,3个实根,从小到大输出,并精确到小数点后2位。样例输入1-5-420样例输出-2.002.005.00错误代码如下(会没有......
  • P1008 [NOIP1998 普及组] 三连击
    P1008[NOIP1998普及组]三连击 题目描述:将1,2,…,9共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数。这道......
  • 4. [2003年NOIP普及组] 乒乓球!!!!(有疑惑)
    【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。比如现在有这么一份记录,(其中W表示......
  • [NOIP1998 普及组] 三连击
    生成九位一到九的全排列,按题目分割、过滤#include<iostream>#include<vector>#include<algorithm>boolvis[20];intqueue[50];intanswers[500];intcnt=0;void......
  • [NOIP2001 提高组] 一元三次方程求解
    以0.01精度在[-100,100]枚举根。#include<iostream>#include<iomanip>intmain(){doublea,b,c,d;std::cin>>a>>b>>c>>d;for(doublex=-100.0;x<=100.......
  • [2008年NOIP普及组] 排座椅
    [2008年NOIP普及组]排座椅思路:首先运用结构体存入每行每列的具体信息,读入m行n列k条横向l条纵向通道d对同学说话,按顺序为每行每列编号。再一对一对地拆说话的同学(要计......