一
题目内容:
一个斐波那契数列的前10项为:1,2,3,5,8,13,21,34,55,89,对于一个最大项的值不超过n的斐波那契数列,求值为偶数项的和。
输入样例:
100
输出样例:
44
程序代码:
def fib(x):
a,b=0,1
for i in range(x+1):
a,b=b,a+b
return a
n=int(input())
i=1
cnt=0
while fib(i)<=n:
if (fib(i))%2==0:
cnt+=fib(i)
i+=1
print(cnt)
二
题目内容:
若已知1800年1月1日为星期3,则对于一个给定的年份和月份,输出这个月的最后一天是星期几。
输入样例:
2033
12
输出样例:
6
程序代码:
def judge(x):
if x%4==0 and x%100!=0 or x%400==0:
return True
return False
L=[3,4,5,6,0,1,2]
specialYear=[31,29,31,30,31,30,31,31,30,31,30,31]
normalYear=[31,28,31,30,31,30,31,31,30,31,30,31]
endYear=int(input())
month=int(input())
startYear=1800
dayNum=0
for i in range(startYear,endYear):
if judge(i):
dayNum+=sum(specialYear)
else:
dayNum+=sum(normalYear)
for i in range(month):
if judge(endYear):
dayNum+=specialYear[i]
else:
dayNum+=normalYear[i]
dayNum=dayNum%7
res=L[dayNum-1]
print(res)
三
题目内容:
如在汉诺塔游戏中,我们希望A塔上的n个盘子,通过塔B移动到塔C,则对于任意输入的n,给出移动步骤。
输入样例:
2
输出样例:
Move 1 from A to B
Move 2 from A to C
Move 1 from B to C
程序代码:
def hanoi(n,A,B,C):
if n==1:
print("Move {:d} from {:s} to {:s}".format(n,A,C))
else:
hanoi(n-1,A,C,B)
print("Move {:d} from {:s} to {:s}".format(n,A,C))
hanoi(n-1,B,A,C)
n=int(input())
hanoi(n,'A','B','C')