• 西安电子科技大学第16届程序设计竞赛 G-小国的复仇


    西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇

    • 2
    链接:https://www.nowcoder.com/acm/contest/107/G
    来源:牛客网

    题目描述

    众所周知,汀老师是XDUACM实验室最优秀的人,无论是学习还是打游戏。今天他突然想到一个好玩的游戏。规则是这样的,在游戏中他要得到n个小国,初始的时候小国和小杰各有1个。经过了很久的修炼,汀老师学会了两种魔法,他每次可以动用自己的智慧来使用魔法。

    第一个魔法:(小杰变小国)可以将自己的智慧复制和当前小杰一样数量的小国出来;

    第二个魔法:(小国大爆发)可以将当前的小杰变成和小国的数量一样,然后小国的数量加倍!

    因为汀老师的智力是无限多的,他不关心花掉的智力大小。但是好学的汀老师想尽快得到n个小国,使得能有更多的时间去读paper和打比赛。他想问问你,最少需要使用多少次魔法可以得到n个小国。

    得到了n个小国后,汀老师去学习,但是小国们基因突变在电脑里越来越多!他们来组织汀老师学习,现在告诉汀老师我要得到更多的同伴!

    输入描述:

    多组数据,第一行一个正整数T(T<=100000)表示数据组数。
    接下来T行,每行一个正整数n(n<=10^6)。

    输出描述:

    对于每组数据输出一个整数,表示得到n个小国汀老师最少需要使用多少次膜法。

    题解:  
    写了一发dfs超时啦,打表找规律发现n为素数时答案为n-1,否则n分解为两个因子的答案数相加。  
    代码:  
    #include<bits/stdc++.h>  
    using namespace std;  
    const int inf=1e9;  
    bool is[1000006];  
    int p[1000006],tol=0;  
    int a[1000006];  
    void init()  
    {  
        for(int i=2;i<1000006;i++)  
        {  
            if(!is[i])  
            {  
                p[tol++]=i;  
                for(int j=i+i;j<1000006;j+=i)is[j]=1;  
            }  
        }  
    }  
    int main()  
    {  
        init();int T;scanf("%d",&T);  
        a[1]=0;  
        for(int i=2;i<=1000000;i++)  
        {  
            if(!is[i])a[i]=i-1;  
            else  
            {  
                int id=0;  
                for(int j=p[0]; ;j=p[++id])  
                {  
                    if(i%j==0)  
                    {  
                        a[i]=a[i/j]+a[i/(i/j)];break;  
                    }  
                }  
            }  
        }  
        while(T--)  
        {  
            int n;scanf("%d",&n);printf("%d
    ",a[n]);  
        }  
        return 0;  
    }  
  • 相关阅读:
    Windows CE Notification API的使用方法
    探讨如何成为技术团队管理者
    Android应用---基于NDK的samples例程hello-jni学习NDK开发
    在eclipse中配置android ndk的自动编译环境builders
    用javah 导出类的头文件, 常见的错误及正确的使用方法
    Android下NDK开发环境搭建
    Android系统修改硬件设备访问权限
    Android调试工具之ADB
    关于前端小白的一点小建议
    Vue.js简单实践
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13271049.html
Copyright © 2020-2023  润新知