腾讯2017秋招笔试编程题:游戏任务标记 [python]
2017-11-23 09:02
363 查看
'''
[编程题] 游戏任务标记
时间限制:1秒
空间限制:32768K
游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个,
任务ID范围[1,1024]。请用32个unsigned int类型来记录着1024个任务是否已经完成。初始状态都是未完成。
输入两个参数,都是任务ID,需要设置第一个ID的任务为已经完成;并检查第二个ID的任务是否已经完成。
输出一个参数,如果第二个ID的任务已经完成输出1,如果未完成输出0。如果第一或第二个ID不在[1,1024]范围,则输出-1。
输入描述:
输入包括一行,两个整数表示任务ID.
输出描述:
输出是否完成
输入例子1:
1024 1024
输出例子1:
1
'''
'''
解题思路:设置权重
本题的难点使用32个unsigned int类型来记录着1024个任务是否已经完成,也就是说每一个无符号整型要可以代表32个任务是否完成。
而无符号整型的范围是0~2^32-1。
如果我们把1024个任务按顺序平均分成32个小组,每个小组就有32个任务。
我们给每个小组内的32个任务按顺序赋予权值,权值的大小为 2^0,2^1...2^31。
如果该小组内的第1,3,7个任务完成,其余任务没完成,则记录该组任务完成情况的无符号数为 2^0 + 2^2 + 2^6。
按照这个思路是可以实现给定任务id来判断任务完成情况的,具体实现比较复杂,我这里不赘述,
当然,如果只需完成这道题目,不必考虑地如此复杂,对上述思路进行适当简化就能做出来了。
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''
id1, id2 = [int(each) for each in input().split()]
tasks = [0]*32
weights = [2**i for i in range(32)]
if id1 > 1024 or id2 > 1024:
print(-1)
else:
id1 -= 1
id1_remain = id1 % 32
id1_pos = id1 // 32
tasks[id1_pos] = weights[id1_remain]
id2 -= 1
id2_remain = id2 % 32
id2_pos = id2 // 32
if tasks[id2_pos] == weights[id2_remain]:
print(1)
else:
print(0)
[编程题] 游戏任务标记
时间限制:1秒
空间限制:32768K
游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个,
任务ID范围[1,1024]。请用32个unsigned int类型来记录着1024个任务是否已经完成。初始状态都是未完成。
输入两个参数,都是任务ID,需要设置第一个ID的任务为已经完成;并检查第二个ID的任务是否已经完成。
输出一个参数,如果第二个ID的任务已经完成输出1,如果未完成输出0。如果第一或第二个ID不在[1,1024]范围,则输出-1。
输入描述:
输入包括一行,两个整数表示任务ID.
输出描述:
输出是否完成
输入例子1:
1024 1024
输出例子1:
1
'''
'''
解题思路:设置权重
本题的难点使用32个unsigned int类型来记录着1024个任务是否已经完成,也就是说每一个无符号整型要可以代表32个任务是否完成。
而无符号整型的范围是0~2^32-1。
如果我们把1024个任务按顺序平均分成32个小组,每个小组就有32个任务。
我们给每个小组内的32个任务按顺序赋予权值,权值的大小为 2^0,2^1...2^31。
如果该小组内的第1,3,7个任务完成,其余任务没完成,则记录该组任务完成情况的无符号数为 2^0 + 2^2 + 2^6。
按照这个思路是可以实现给定任务id来判断任务完成情况的,具体实现比较复杂,我这里不赘述,
当然,如果只需完成这道题目,不必考虑地如此复杂,对上述思路进行适当简化就能做出来了。
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''
id1, id2 = [int(each) for each in input().split()]
tasks = [0]*32
weights = [2**i for i in range(32)]
if id1 > 1024 or id2 > 1024:
print(-1)
else:
id1 -= 1
id1_remain = id1 % 32
id1_pos = id1 // 32
tasks[id1_pos] = weights[id1_remain]
id2 -= 1
id2_remain = id2 % 32
id2_pos = id2 // 32
if tasks[id2_pos] == weights[id2_remain]:
print(1)
else:
print(0)
相关文章推荐
- 腾讯2017秋招笔试编程题--游戏任务标记
- 腾讯2017秋招笔试编程题(二)----游戏任务标记
- 腾讯2017[编程题] 游戏任务标记
- 【2017腾讯题】游戏任务标记(JAVA)
- 牛客网编程练习之腾讯2017校招题:游戏任务标记
- 2017腾讯编程题----游戏人物标记
- 腾讯2017秋招笔试编程题:编码 [python]
- 腾讯2017秋招笔试编程题:素数对 [python]
- 腾讯2017秋招笔试编程题:geohash [python]
- 腾讯2017秋招笔试编程题(三)---素数对
- 腾讯2017暑期实习生编程题:构造回文 [python]
- 牛客网解题-2017腾讯秋招笔试编程题练习卷
- 腾讯2017秋招笔试编程题(四)----geohash编码
- 算法与数据结构——算法题 154:全民飞机大战游戏的红包功能(腾讯2017校招笔试题) ? 待解决
- [笔试编程题] 腾讯2017暑期实习生编程题-java
- 2017网易游戏·在线笔试编程题·第一题
- 腾讯2017暑期实习生编程题:有趣的数字 [python]
- 4--百度2017春招笔试真题编程题集合--有趣的排序 (Python)
- 2--百度2017春招笔试真题编程题集合--度度熊回家 (Python)
- 百度2017春招笔试真题编程题集合--Python