杨校老师课堂备赛C++信奥之模拟算法习题专项训练
模拟算法针对性训练
杨校老师课堂备赛C++信奥之模拟算法习题专项训练
【习题】
1. 电梯升降
题目描述
某城市最高的建筑只有一部电梯。一份电梯升降任务表由N个正整数组成,这些数字表示电梯按照给定的顺序停留的楼层号。
电梯升一层花费6秒钟,降一层花费4秒钟,并且每次停留花费5秒钟。
对于每一份任务表,你要计算出完成全部升降任务所花费的总时间。一开始,电梯在第0层,并且最终完成任务时电梯不必一定返回到0层。
输入描述
有多组测试样例。每组测试样例包含一个正整数N,接下来是N个正整数。
在输入中,所有的数字都小于100。当N=0时,表示输入结束。
输出描述
对于每一组测试样例,在一行中输出总时间。
样例
输入
1 2
3 2 3 1
0
输出
17
41
2. 数列
题目描述
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是: 3 0 , 3 1 , 3 0 + 3 1 , 3 2 , 3 0 + 3 2 , 3 1 + 3 2 , 3 0 + 3 1 + 3 2 3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2 30,31,30+31,32,30+32,31+32,30+31+32…) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。
输入描述
输入只有1行,为2个正整数,用一个空格隔开: k N(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。
输出描述
输出为计算结果,是一个正整数。(整数前不要有空格和其他符号)。
样例
输入
3 100
输出
981
3. 扑克洗牌问题
题目描述
给您2n张牌,编号为1,2,3,4,5……n,n+1,……2n,这也是最初牌的顺序。一次洗牌是把序列变为n+1,1,n+2,2,n+3,3……2n,n。可以证明,对于任意自然数n,都可以在经过m次洗牌后重新得到初始的顺序。编程对于小于10000的自然数n(n从键盘输入)的洗牌,求出重新得到初始顺序的洗牌次数m的值,并显示洗牌过程。
输入描述
输入整数n
输出描述
显示洗牌过程,并输出洗牌次数m
样例
输入
5
输出
1 2 3 4 5 6 7 8 9 10
1:6 1 7 2 8 3 9 4 10 5
2:3 6 9 1 4 7 10 2 5 8
3:7 3 10 6 2 9 5 1 8 4
4:9 7 5 3 1 10 8 6 4 2
5:10 9 8 7 6 5 4 3 2 1
6:5 10 4 9 3 8 2 7 1 6
7:8 5 2 10 7 4 1 9 6 3
8:4 8 1 5 9 2 6 10 3 7
9:2 4 6 8 10 1 3 5 7 9
10:1 2 3 4 5 6 7 8 9 10
m=10
4. 冰壶比赛
题目描述
在冰壶比赛中,给出一个目标点P以及一个规定的正整数r。每一局由甲和乙两队轮流投冰壶各8次后,该局比赛结束。此时,哪一方的冰壶最终离目标点P更近,该方得分,另一方不得分。得分方每颗离目标点P距离小于或等于r、位置较另一队所有冰壶都更接近目标点P的冰壶都可以得1分
比赛最多进行