zoukankan      html  css  js  c++  java
  • p1927

    哇这题坑是真的多,虽然很警惕还是交了三次。

    以前没好好看题还以为超级超级难,就一直没做。今天写了一下觉得就还好,思路好想,不被坑难。

    一句话题意:找到大于等于n的约数和的约数和等于自己的第一个数,输出它和它的约数和。

    看到s<=18000就可以上一个暴力,枚举每个因数i,i的倍数的那些数的sum[k*i]+=i就好了,复杂度还说的过去。

    那么我菜在哪呢?首先

    忽略那些自己是自己的“非常好友”的情况

    这句话没写上去,10分没了。

    然后虽然n<=18000但是答案一定比18000大,然而我只处理到了18000,还怪蠢了。偷偷看了一眼数据,发现处理到20000就好了。

    而且sum[i*k]也是有可能很大的,再拿着sum[sum[i*k]]去比较就会越界了。

    最后还是交了三遍才过。

    真是菜啊。

    复杂度是O(跑得过)

    int i,f;
    int n;
    int o[20010];
    int main()
    {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    //freopen("123.in","r",stdin);
    //freopen("123.out","w",stdout);
        cin>>n;
        
        for(i=1;i<=10000;i++)
            for(f=2*i;f<=20000;f+=i)
                o[f]+=i;
        for(i=n;;i++)
        {
            if(o[i]>=20000) continue;
            if(i==o[o[i]]&&i!=o[i])
            {
                cout<<i<<' '<<o[i];
                return 0;
            }
        }
    }
  • 相关阅读:
    连接查询
    使用聚合函数查询
    mysql 查询数据
    Mysql的基本操作
    MySQL的数据类型
    Mysql简介及安装教程
    客户端-服务端
    configparser模块
    反射
    class_method和static_method
  • 原文地址:https://www.cnblogs.com/qywyt/p/9459546.html
Copyright © 2011-2022 走看看