一:做俯卧撑
老师规定,当在心中数到 k-1 时,下一个数字从0开始数。例如,当k=13时,同学们报出的前几个数依次为:
1, 2, 4, 7, 11, 3, 9, 3, 11, 7。
如果有一位同学说错,那么他将做与当轮游戏中第一位同学所有说出的数字的总和(即第一位同学说了T个数字的总和)相同的俯卧撑数。
输出一行,包含一个整数,表示该同学做的俯卧撑数。
分析:巧妙使用余数运算%
"""
1 2 4
7 11 3
9 3 11
"""
n,k,T=map(int,raw_input().split()) # 3 13 3
num=n*(T-1)+1 # num=7
val,arr,flag=1,[],0
for i in range(1,num+1):
val += i - 1
while val>=k:
val=val%k
# print i,val,arr
if i%n==1:
arr.append(val)
print sum(arr)
二:数数练习
为了鼓励宝宝坚持数数,每当宝宝数到7 或者包含7、还有7 的倍数时,爸爸会竖起大拇指以示鼓励。下表是 n=4 的数数情况(X 表示爸爸竖起大拇指)。当编号为 3 的玩具遇到爸爸第3次竖起大拇指的时候,宝宝实际上数到了 27。
玩具 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3
数数 1 2 3 4 5 6 X 8 9 10 11 12 13 X 15 16 X 18 19 20 X 22 23 24 25 26 X
给定 n,m 和 k,你的任务是计算当编号为 m 的玩具遇到爸爸第 k 次竖起大拇指时,宝宝实际上数到了几。
while True:
n,m,k=map(int,raw_input().split())
if n==0 and m==0 and k==0:
break
i,j,num=1,1,0
minval=0
while num<k:
a, b = 7 * i, 7 + 10 * j # 得到7或者包含7、还有7的倍数。
if a<b:
minval=a
i+=1
else:
minval=b
j+=1
y=minval%(2*n-2)
if y==0 and m==2:
num += 1
elif y<=n and y==m:
# print minval,num
num+=1
elif y>n and 2*n-y==m:
# print minval,num
num+=1
else:
pass
print minval
三:黑默丁格的炮台
第一行9个整数,R,x1,y1,x2,y2,x3,y3,x0,y0。(0 <= R,x1,y1,x2,y2,x3,y3,x0,y0 <= 100) R 代表炮台攻击的最大距离,(x1,y1), (x2,y2), (x3,y3)代表三个炮台的坐标。(x0,y0)代表敌人的坐标。如果一个炮台能攻击到敌人,那么会对敌人造成1X的伤害。
R,x1,y1,x2,y2,x3,y3,x0,y0=map(int,raw_input().split())
d1=((x1-x0)**2+(y1-y0)**2)**0.5
d2=((x2-x0)**2+(y2-y0)**2)**0.5
d3=((x3-x0)**2+(y3-y0)**2)**0.5
res=0
if d1<=R:
res+=1
if d2<=R:
res+=1
if d3<=R:
res+=1
print str(res)+'X'
三:刮刮卡兑换
凭3个刮刮卡可以兑换一盒同等价位的米粉,并且可以一直循环下去,对于初始买入的n盒米粉,最后一共能拿到多少盒米粉。
n=int(raw_input())
b,res=n,n
while b>=3:
res+=b/3
b=b/3+b%3
print res
四:最大间隔
给定一个递增序列,a1<a2<…<an。定义这个序列的“最大间隔”为
现在要从a2,a3…an-1中删除一个元素,问剩余序列的“最大间隔”最小是多少?
n=int(raw_input())
arr=map(int,raw_input().split())
res,minval=[],0
for i in range(n-1):
res.append(arr[i+1]-arr[i])
for i in range(1,n-1):
arr1=res[:]
arr1.pop(i-1)
arr1.pop(i-1)
arr1.append(arr[i+1]-arr[i-1])
mid=max(arr1)
if minval==0:
minval=mid
elif mid<minval:
minval=mid
else:
pass
print minval
五:小球的距离
小赛和三个小朋友站在不同的楼层,同时放下手中的小球,当小球全部落到地面不跳时,求4个小球一共经过了多少米?(数字都为整数)
arr=map(int,raw_input().split())
resval=0
def calHight(val):
res = val
while val>1:
val = int(val/2) # >>> int(1.4)-1
# >>> int(1.9)-1
res += val*2
return res
for val in arr:
resval+=calHight(val)
print resval
六:小赛旅游
输入,第一行有两个数字,第一个数字为竹筐装满可以走的公里数,即N值;第二个数字为起点到终点之间的村庄个数。第二行为起点和村庄、村庄之间、村庄和终点之间的距离。这些数字都为整数,且范围不能超过一个int型表达的范围。
输出,至少需要补充食物的次数。
分析:数组里面和能够小于等于某个数的个数
n,m=map(int,raw_input().split())
N=n
arr=map(int,raw_input().split())
count = 0
for i in range(m):
if N < arr[i]:
break
elif N-arr[i] >= arr[i+1]:
N = N-arr[i]
else:
N = n
count+=1
print count
七:博弈问题
参照:https://blog.csdn.net/jnulzl/article/details/52504225
n,m,x=map(int,raw_input().split())
p,q=map(float,raw_input().split()) # p,q=map(int,raw_input().split())是错误的
result = (x * p) / (q * (n + 1) - p * n)
if result < 1.0:
print '%.2f' % (1)
elif result > m:
print '%.2f' % (m)
else:
print '%.2f' % (result)