zoukankan      html  css  js  c++  java
  • 洛谷 P1029 最大公约数和最小公倍数问题

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

    题意

    给你两个数a,b,让你求有多少对数,他们的最大公约数是a,最小公倍数是b。

    解题思路

    首先,要知道(a*b)等于满足条件的两个数的乘积,因此我们可以让 $ i $ 从1开始(另一个数是(a*b/i))进行遍历,如果第二个数能够被整除,并且这两个数最大公约数是a,那么就是满足条件的两个数。

    还有一个思路是说我们可以从a开始遍历,每次加a,另一个数也和上面求法一样。因为最小的数一定是从a开始的。

    这样代码就很容易写出来了。

    代码实现

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    int main()
    {
    	int x, y, tmp, ans=0;
    	scanf("%d%d", &x, &y);
    	tmp=x*y;
    	for(int i=1; i<=y; i++)
    	{
    		if(tmp%i==0 && __gcd(i, tmp/i)==x)
    		{
    			ans++;
    		}
    	}
    	printf("%d
    ", ans);
    	return 0;
     } 
    
    欢迎评论交流!
  • 相关阅读:
    case 条件语句
    shell 函数
    if条件语句
    IP地址分类和分段
    shell脚本的条件测试与比较
    bc命令
    [LeetCode]Remove Duplicates from Sorted Array II
    [LeetCode]Merge Two Sorted Lists
    [LeetCode]Climbing Stairs
    [LeetCode]Merge Intervals
  • 原文地址:https://www.cnblogs.com/alking1001/p/11454996.html
Copyright © 2011-2022 走看看