1724: 牛妹的蛋糕
题目描述
众所周知,牛妹非常喜欢吃蛋糕。
第一天牛妹吃掉蛋糕总数三分之一多一个,第二天又将剩下的蛋糕吃掉三分之一多一个,以后每天吃掉前一天剩下的三分之一多一个,到第n天准备吃的时候只剩下一个蛋糕。
牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?
输入
输入n,0<n< 30。
输出
输出第一天蛋糕的数量。
样例输入 Copy
2 4样例输出 Copy
3 10def fun(n): cake_c=1 for i in range(n-1): cake_c=(cake_c+1)*3//2 return cake_c while True: try: n=int(input()) print(fun(n)) except EOFError: break
做题感悟:从后往前找到数学关系,不停地迭代就好了。不过,只有向下取整了以及多组输入了才能过。
1712: 菱形图案
[命题人 : admin]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。
输入
多组输入,一个整数(2~20)。
输出
针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。每输出一个菱形的后面需要空一行。
样例输入 Copy
2 3 4样例输出 Copy
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *while True: try: n=int(input()) for i in range(n): spaces=(n-i)*' ' stars=(i+1)*'* ' print(spaces+stars) print((n+1)*'* ') for i in range(n-1,-1,-1): spaces = (n - i) * ' ' stars = (i + 1) * '* ' print(spaces+stars) print() except EOFError: break
做题感悟:找到星星、空格分别与行的关系,最后进行输出就好了。
1655: 数字交换
[命题人 : admin]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。
输入
测试数据有多组,输入n(1<=n<=20),接着输入n个数。
输出
对于每组输入,输出交换后的结果。
样例输入 Copy
2 1 3样例输出 Copy
3 1while True: try: n=int(input()) arr_l=list(map(int,input().split())) ma_n=max(arr_l) mi_n=min(arr_l) ma_in=arr_l.index(ma_n) mi_in=arr_l.index(mi_n) temp=arr_l[ma_in] arr_l[ma_in]=arr_l[mi_in] arr_l[mi_in]=temp print(*arr_l) except EOFError: break
做题感悟:简单,会用交换的基本格式就行。
2110: 秘密大厦的访客
[命题人 : admin]
时间限制 : 1.000 sec 内存限制 : 128 MB
提交题目描述
Kimi最近在负责一栋秘密大厦的安保工作,他的工作是记录大厦的来访者情况。
每个来访者都有一个与之对应的唯一编号,在每一条到访记录中记录了该来访者的编号。
现在Kimi需要统计每一条记录中的来访者是第几次光临秘密大厦。输入
单组输入,每组两行。
第1行包含一个正整数n,表示记录的条数,n不超过1000;
第2行包含n个正整数,依次表示Kimi的记录中每位来访者的编号,两两之间用空格隔开。输出
输出1行,包含n个正整数,两两之间用空格隔开,依次表示每条记录中的来访者编号是第几次出现。
样例输入 Copy
6 1 1 2 2 3 1样例输出 Copy
1 2 1 2 1 3n=int(input()) a=list(map(int,input().split())) count={} results=[] for id in a: if id in count: count[id]+=1 else: count[id]=1 results.append(count[id]) print(*results)
做题感悟:一开始没想到用键值对统计和最后通过列表进行输出。
1289: 成绩排序
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
提交题目描述
有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
输入
测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。输出
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩样例输入 Copy
3 zhao 19 90 qian 20 90 sun 19 100样例输出 Copy
qian 20 90 zhao 19 90 sun 19 100while True: try: n=int(input()) results=[] for i in range(n): result=list(input().split()) results.append(result) results.sort(key=lambda x:(int(x[2]),x[0],int(x[1]))) for i in results: print(*i) except EOFError: break
做题感悟:了解sort()函数中的分组排序就好。