18.四塔问题
http://acm.fzu.edu.cn/problem.php?pid=1036
由 T(1)=1,T(2)=3,T(3)=5,T(4)=9,T(5)=13,T(6)=17,T(7)=25,T(8)=33以及T(15)=129可以得到如下函数所示规律。
def min_times(number):
count=0
for i in range(1,25001):
count+=i
if number<=count:
groups=i
break
times=0
for group in range(1,groups):
times+=(2**(group-1))*group
times+=(2**(groups-1))*(number-sum(range(1,groups)))
print(times%10000)
import sys
for read_in in sys.stdin.readlines():
number=int(read_in.rstrip())
min_times(number)