1184: 习题5-11 求多次落地弹球高度
题目描述
一个球从100m的高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。
求它从第一次落地时,到第N次落地时,共经过了多少米,第N次反弹多高。输入
一个正整数N,表示球落地的次数。
输出
length=球第N次落地时所经过了距离
high=球第N次落地反弹的高度
小数点后保留4位小数。
注意:末尾输出换行。样例输入 Copy
10样例输出 Copy
length=199.8047 high=0.0977来源/分类
n=int(input()) length=0 high=50 for i in range(n): length+=high*2 high/=2 print("length="+"{:.4f}".format(length)) print("high="+"{:.4f}".format(high*2))
做题感悟:实际问题。一个for循环解决。
演草纸上进行前三步的演算,high的值比较好求,同时也要构造条件将high的值和length的值联系起来,陷阱是这个:“求它从第一次落地时,到第N次落地时”。根据答案对循环的次数和循环的初始值进行取舍。
1307: 整数奇偶排序
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
提交题目描述
输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求:
1.先输出其中的奇数,并按从大到小排列;
2.然后输出其中的偶数,并按从小到大排列。输入
任意排序的10个整数(0~100),彼此以空格分隔。
输出
可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。
样例输入 Copy
0 56 19 81 59 48 35 90 83 75 17 86 71 51 30 1 9 36 14 16样例输出 Copy
83 81 75 59 35 19 0 48 56 90 71 51 17 9 1 14 16 30 36 86提示
多组数据,注意输出格式
1. 测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>...>>a[9])类似的做法来实现;
2. 输入数据随机,有可能相等。来源/分类
while True: try: a=list(map(int,input().split())) jishu=[] oushu=[] for i in range(len(a)): if a[i]%2!=0: jishu.append(a[i]) else: oushu.append(a[i]) jishu.sort(reverse=True) oushu.sort() jishu.extend(oushu) print(*jishu) except EOFError: break
做题感悟:排序问题。用列表。
1369: 解密
[命题人 : 201501010119]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
湖南中医药大学有含浦、东塘 2 个校区,学校办学历史悠久,前身为 1934 年的湖南国医专科学校,1953
年创办湖南中医进修学校,1960 年创建普通高等本科院校——湖南中医学院,1979 年成为全国首批取得
中医类研究生学历教育资格的院校,1990 年原湖南科技大学成建制并入湖南中医学院,2002 年与湖南省
中医药研究院合并,2006 年经教育部批准更名为湖南中医药大学,2012 年进入湖南省一本招生序列。
目前,学校与湖南省中医药研究院实行校院合一的管理体制。学校学科门类齐全、中医药特色鲜明。学校
设有 18 个学院、24 个本科专业,涵盖医、理、工、管、文等 5 大学科门类。中医诊断学在本学科研究领
域居国内领先水平。
小 F 居住在含浦校区,他想和东塘校区的同学小 L 聊天,为了保证沟通安全,他发明了一种加密方式,这
种加密方式是这样的:对于一个 01 串,小 F 会将其从左到右每 8 位分成一组,最后一组可能不足 8 位,
对每组进行逆序操作,即如果原来是 bLbL+1bL+2 · · · bR−1bR, 逆序之后变成 bRbR−1bR−2 · · · bL−1bL。现在
小 F 已经加密好了一个串,并且将其发给了小 L,你能帮助小 L 得到这串密文对应的原始信息吗?输入
单组数据。
一行一个 01 串,代表加密后的字符串,串长度大于 0, 小于等于 100。输出
一行字符串,代表加密后的字符串所对应的原始信。
样例输入 Copy
100010110011101样例输出 Copy
110100011011100while True: try: strings = input() res, temp, n_count = "", "", 0 for s in strings: res, cnt = s + res, n_count + 1 if cnt >= 8: temp, cnt, res = f"{temp + res}", 0, "" print(temp + res) except: break
做题感悟:这个代码是copy别人的,不知道为什么用切片过不了。
1713: 迷路的牛牛
[命题人 : admin]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。
输入
每个输入包含一个测试用例。 每个测试用例的第一行包含一个正整数,表示转方向的次数N(N<=1000)。 接下来的一行包含一个长度为N的字符串,由L和R组成,L表示向左转,R表示向右转。输出
输出牛牛最后面向的方向,N表示北,S表示南,E表示东,W表示西。样例输入 Copy
3 LRR样例输出 Copy
E来源/分类
n=int(input()) a=input() fangxiang=["N","E","S","W"] c_index=0 for i in a: if i=='L': c_index=(c_index-1)%4 elif i=='R': c_index = (c_index+1) % 4 print(fangxiang[c_index])
做题感悟:实时控制方向的偏转。当把elif变为else的时候,答案会报错20%。
1048: 酷酷的单词
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出 现的次数都不同。
比如 ada 是酷的,因为 a 出现 2 次,d 出现 1 次,而 1 和 2 不同。再比如,banana 也是酷的, 因为 a 出现 3 次,n 出现 2 次,b 出现 1 次。但是,bbacccd 不是酷的,因为 a 和 d 出现的次数 相同(均为 1次)。输入
输入包含不超过 30 组数据。每组数据第一行为单词个数 n (1<=n<=10000)。以下 n 行各包含一 个单词,字母个数为 1~30。
输出
对于每组数据,输出测试点编号和酷单词的个数。
样例输入 Copy
2 ada bbacccd 2 illness a样例输出 Copy
Case 1: 1 Case 2: 0来源/分类
case_number = 1 while True: try: n = int(input()) cool_count = 0 for _ in range(n): word = input() char_count = {} for char in word: if char in char_count: char_count[char] += 1 else: char_count[char] = 1 if len(set(char_count.values())) == len(char_count) and len(word)!=1: cool_count += 1 print(f"Case {case_number}: {cool_count}") case_number += 1 except EOFError: break
做题感悟:用键值对统计出现的字母的个数,注意通过输入输出进行输出代码的修改。