西安电子科技大学第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-,否则n分解为两个因子的答案数相加。
代码:
#include<bits/stdc++.h>
using namespace std;
const int inf=1e9;
bool is[];
int p[],tol=;
int a[];
void init()
{
for(int i=;i<;i++)
{
if(!is[i])
{
p[tol++]=i;
for(int j=i+i;j<;j+=i)is[j]=;
}
}
}
int main()
{
init();int T;scanf("%d",&T);
a[]=;
for(int i=;i<=;i++)
{
if(!is[i])a[i]=i-;
else
{
int id=;
for(int j=p[]; ;j=p[++id])
{
if(i%j==)
{
a[i]=a[i/j]+a[i/(i/j)];break;
}
}
}
}
while(T--)
{
int n;scanf("%d",&n);printf("%d\n",a[n]);
}
return ;
}

最新文章

  1. ng-repeat 里 使用ng-show ng-hide出现闪动
  2. oracle常用命令大全及心得
  3. Sublime Text 必备插件
  4. CSS的sprite和单位
  5. MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析
  6. Java 之 I/O 系列 02 ——序列化(一)
  7. 【控件扩展】带圆角、边框、渐变的panel
  8. rabbitmq+haproxy+keepalived实现高可用集群搭建
  9. (转)iOS中3种正则表达式的使用与比较
  10. 003-python列表
  11. setTimeout中所执行函数中的this,永远指向window
  12. Qt实现基于G.729A(G729A)的语音聊天
  13. react中createFactory, createClass, createElement分别在什么场景下使用,为什么要这么定义?
  14. 《剑指Offer》面试题-用两个栈实现队列
  15. 【鸡年大吉】,不知道写点啥,放个demo(小球碰撞)吧,有兴趣的看看
  16. iOS 图片的拉伸,取固定区域显示
  17. redis锁处理并发问题
  18. C# 知识点回忆..
  19. mysql基操
  20. [Spring] Aspect Oriented Programming with Spring | AOP | 切面 | 切点

热门文章

  1. shell中嵌套执行expect命令实例(利用expect实现自动登录)
  2. SEM竞价数据基本分析方法
  3. setStyleSheet 一些QSS设置的集合
  4. Qt中使用setStyleSheet对QPushButton按钮进行外观设置
  5. Codeforces Round #374 (Div. 2) D. Maxim and Array 线段树+贪心
  6. dom 兼容性问题 2 offset
  7. python直接赋值,浅拷贝和深拷贝
  8. LINUX C的学习
  9. IDEA提交Git时忽略文件【ignore文件备份】
  10. Java tutorial 02