AI机器人最高等级
AI机器人最高等级
题目描述
在小朱朱的游戏世界里,有n个AI机器人。
他们相互之间可以进行PK,胜方存活且升一级,负方直接淘汰。
高等级AI必定战胜低等级AI,同等级AI的PK结果必定一胜一负,且规定每级差距至多为1级。
一开始所有的AI机器人都是0级,小朱朱可以指定任意两个AI机器人进行PK。
小朱朱想知道,按照此规则进行AI对抗赛,能产生的最高等级AI机器人为多少级。
输入描述
一个正整数n, $ 2 <= n <= 10 ^ {18} $, 表示AI机器人的数量
输出描述
游戏结束时,最高等级AI机器人可以达到的等级
示例
输入:2;输出:1
输入:4;输出:2
输入:72;输出:8
解析
这个题目初看起来没有任何思路,那就先看看前面最高等级所需的最少情况。
首先看看什么情况下等级会最高,就用示例中的72为例:
若两两0级进行PK,则会得到36个1级AI机器人,再两两PK,则可以得到18个2级AI机器人。
若先让部分0级进行PK,再将升到1级的AI机器人和剩余的0级机器人进行PK,这里72刚好能被3整除,也就意味着第一次PK,得到24个1级AI机器人和24个0级AI机器人,第二次PK让1级AI机器人和0级AI机器人进行PK,则可以得到24个2级AI机器人。
由此可知,等级一高一低时会产生更多的同级AI机器人,也就意味着这样也会得到最高等级的AI机器人。
这样,让就从几个低等级的AI机器人所需要的最少0级AI机器人的数量是多少:
0级机器人\(n_0\):1
1级机器人\(n_1\):2
2级机器人\(n_2\):\(n_0 + n_1= 1 + 2\)
3级机器人\(n_3\):\(n_1+ n_2 = 2 + 1 + 2 = 1 + 2 * 2\)
4级机器人\(n_4\):\(n_2 + n_3 = 1 + 2 + 1 + 2 * 2 = 1 * 2 + 2 * 3\)
5级机器人\(n_5\):\(n_3 + n_4 = 1 * 3 + 2 * 5\)
6级机器人\(n_6\):\(n_4 + n_5 = 1 * 5 + 2 * 8\)
7级机器人\(n_7\):\(n_5 + n_6 = 1 * 8 + 2 * 13\)
8级机器人\(n_8\):\(n_6 + n_7 = 1 * 13 + 2 * 21\)
9级机器人\(n_9\):\(n_7 + n_8 = 1 * 21 + 2 * 34\)
..................................
由此可以看出,这里的系数满足斐波那契数列,假设斐波那契数列相邻两个数为\(a,b(a < b)\),那么,\(n_x=1 * a + 2 * b\)。
由于输入最小为2,可见斐波那契数列是从0,1开始的,此时的最高等级为1。依次迭代一次斐波那契数列的系数,最高等级加1,若该系数所计算处的\(n_x\)刚好满足输入的值,则此时的最高等级为\(x\),若\(n_{x-1} < n < n_{x}\),那么此时的最高等级为\(x-1\)。
据此,则可以编出下面的程序。
def ai_pk_grade(total_num):
    a, b = 0, 1
    grade = 1
    if total_num <= 1:
        return 0
    while True:
        required_num = a * 1 + b * 2
        if required_num > total_num:
            return grade - 1
        elif required_num == total_num:
            return grade
        else:
            a, b = b, a+b
            grade = grade + 1
while True:
    num = int(input())
    print(ai_pk_grade(num))
AI机器人最高等级的更多相关文章
- 5G和AI机器人平台
		5G和AI机器人平台 Qualcomm Launches 5G and AI Robotics Platform 高通技术公司(Qualcomm Technologies)周三推出了一款高级5G和人工 ... 
- 5G和AI机器人平台为工业4.0和无人机提供服务
		5G和AI机器人平台为工业4.0和无人机提供服务 Qualcomm 5G and AI robotics platform delivers for Industry 4.0 and drones 高 ... 
- 动手做个 AI 机器人,帮我回消息!
		大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题. 但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和无力吧:另外我 ... 
- 从植发AI看智能手术机器人的国产化之路
		在工作和生活的双重压力下,很多80后乃至90后的青年都"光荣"地加入了"脱发一族".为了拯救发际线或是不变成"地中海",很多人从此走上了寻医 ... 
- 马里奥AI实现方式探索 ——神经网络+增强学习
		[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ... 
- AI(一):概念与资讯
		AI: Artificial Intelligence(人工智能),它是研究.开发用于模拟和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学,上个世纪50年代一次学术讨论会议上,下图中几位著 ... 
- 花十分钟,让你变成AI产品经理
		花十分钟,让你变成AI产品经理 https://www.jianshu.com/p/eba6a1ca98a4 先说一下你阅读本文可以得到什么.你能得到AI的理论知识框架:你能学习到如何成为一个AI产品 ... 
- 2.5星|《AI进化论》:疑似基于PPT与公关稿整理汇编而成
		AI进化论·解码人工智能商业场景与案例 全书是目前AI在一些热门领域的应用的介绍,包括各行业内AI可以实现的功能.现有相关公司的具体业务等.对各公司的介绍仅限于能实现什么业务,具体做的怎么样,有什么优 ... 
- AI:AI
		ylbtech-AI:AI 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工 ... 
随机推荐
- k8s系列---故障
			kubectl get namespace prom Terminating 45h namespace 出现Terminating 状态,一直删不掉 解决: 1:导出namespace的json文件 ... 
- linux的目录结构知识
			1. Linux的目录结构知识图解 2. linux下应用程序组成及文件目录定义 #二进制程序: /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/l ... 
- ssh_key认证
			ssh认证流程步骤: 1.主机host_key认证 2.身份验证 3.身份验证通过 原理及更多知识点,请查看好友博客 http://www.cnblogs.com/f-ck-need-u/p/7129 ... 
- Nodejs中,path.join()和path.resolve()的区别
			在说path.join()和path.resolve()的区别之前,我先说下文件路径/和./和../之间的区别 /代表的是根目录: ./代表的是当前目录: ../代表的是父级目录. 然后再来说下pat ... 
- Zookeeper分布式系统协同器概念快速学习
			原文格式可以访问:https://www.rockysky.tech 分布式系统的基本操作 主节点选举:在绝大多数分布式系统中,都需要进行主节点选举.主节点负责管理协调其它节点或者同步集群中其它节点的 ... 
- GNU make doc - 函数总结
			$(value variable) 使用variable未展开状态的值 FOO = $(PATH) all: $(warning $(FOO)) $(warning $(value FOO)) #ou ... 
- 痞子衡嵌入式:ARM Cortex-M内核那些事(6)- 系统堆栈机制
			大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM Cortex-M堆栈机制. 今天给大家分享的这篇依旧是2016年之前痞子衡写的技术文档,花了点时间重新编排了一下格式.前面痞子衡 ... 
- Java架构-高并发的解决实战总结方案
			Java架构-高并发的解决实战总结方案 1.应用和静态资源分离 刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片.视频.j ... 
- 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》
			最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ... 
- Java基础之二、类的知识
			类定义---方法及其处理的数据对象的集合结构 将现实的对象(物体)和概念映射到程序中的对象(变量)中 1:使用new运算符创建的类类型的主体称为实例,创建实例的操作称为实例化, new Account ... 
