1 条题解

  • 6
    @ 2022-10-15 20:24:37

    本题找规律的题,可以多写几个样例观察规律 最后发现答案总是等于 n + 2 * (n / 2 + n / 3) 因此可以直接输出 n + 2 * (n / 2 + n / 3)

    还有一种就是可以直接打表,可以明显的观察到n为奇数或者偶数时的规律 打表代码

    for(int i=1;i<=100;i++)
    {
        int ct=0;
        for(int j=1;j<=i;j++)
        {
            for(int k=1;k<=i;k++)
            {
                int gcd=__gcd(j,k),lcm=j*k/gcd;
                if(3 * gcd>=lcm)
                {
                    ct++;
                }
            }
        }
        cout<<i<<" "<<ct<<endl;
    }
    
    • @ 2022-10-15 20:27:52

      __gcd即为求最大公因数的函数,可以自己用辗转相除法实现,同时最小公倍数 lcm=(a * b)/gcd (定理:对于a和b,gcd为二者最大公因数,lcm为二者最小公倍数,则a * b=gcd * lcm)

信息

ID
807
时间
1000ms
内存
256MiB
难度
7
标签
递交数
224
已通过
54
上传者