@[TOC]2018年省赛1 分数
2018年省赛1 分数*
题目描述
1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …
每项是前一项的一半,如果一共有20项,
求这个和是多少,结果用分数表示出来。
类似:
3/2
当然,这只是加了前2项而已。分子分母要求互质。
注意:
需要提交的是已经约分过的分数,中间任何位置不能含有空格。
请不要填写任何多余的文字或符号。
思路
利用数学知识,可以将该式子变换为同一个分母,由于1是2的0次方,2是2的1次方,即可得知第20项为2的19次方,通过通分,可以得知,分子为2的0次方到2的19次方的和,可以利用循环来写。
代码
n=0
for i in range(0,20):
n=n+2**i
b=2**19
#print(str(n)+"/"+str(b)) #两种方式都可以输出
print("{}/{}".format(n,b))
1048575/524288
注意for循环是左闭右开的,所以要写到20,我第一次就因为这个出现了问题,找了10分钟错误
2018年省赛2 星期一
题目描述
整个 2020 世纪(190119011901 年 111 月 111 日至 200020002000 年 121212 月 313131 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)
思路
年份题大部分都是要算闰年的,把计算闰年的方法记住
if i%400==0 or i%4==0 and i%100!=0:
一个世纪有100年,假设都是正常的年份,100年有365100天,通过计算闰年方法,即可知道,1901年到2000年有25个闰年,那么这个世纪就有365100+25天,通过对7整除,能知道一个世纪有多少个星期,天数再对7取余数,可以知道这一个世纪不是刚好有之前算的星期数,然后根据取余求得的数字,以及2000年12月31日是周日,最后求到底有几个星期一。
代码
count=0
for i in range(1901,2001):
if i%400==0 or i%4==0 and i%100!=0:
count+=1
#print(count)
all=365*100+25
week=all//7
#print(week)
res=all%7
#print(res)
print(week)
5217