【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题

题目链接:[NOIP2001 普及组] 最大公约数和最小公倍数问题 - 洛谷

题目难度:普及-

涉及知识点:stl函数,最大公因数,最小公倍数

题意:【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题_第1张图片

输入输出样例:【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题_第2张图片

分析:直接套用公式优化累加即可

AC代码:

#include//可使用STL函数:__gcd判断最大公因数
using namespace std;
int main()
{
    int a,b,ans=0;
    ios::sync_with_stdio(false);//加快cin,cout
    cin>>a>>b;
    for(int i=a;i<=b;i++)
    {//再来一个for循环会超时
        int j=a*b/i;//最大公因数==(a*b)/__gcd(a,b),所以一因数==最大公因数*最小公倍数/另一因数
        if(__gcd(i,j)==a&&(i*j)/__gcd(i,j)==b)ans++;//判断累加
    }
    cout<

总结:直接套用公式优化累加即可

你可能感兴趣的:(算法,数据结构)