第14届蓝桥杯Python组第一轮选拔赛

1724: 牛妹的蛋糕

题目描述

众所周知,牛妹非常喜欢吃蛋糕。

第一天牛妹吃掉蛋糕总数三分之一多一个,第二天又将剩下的蛋糕吃掉三分之一多一个,以后每天吃掉前一天剩下的三分之一多一个,到第n天准备吃的时候只剩下一个蛋糕。

牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?

输入

输入n,0<n< 30。

输出

输出第一天蛋糕的数量。

样例输入 Copy
2
4
样例输出 Copy
3
10

def 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

提交

解决: 1265提交量: 3482统计

题目描述

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

提交

解决: 343提交量: 720统计

题目描述

输入一个数n,然后输入n个数值各不相同,调换数组中最大和最小的两个数,然后输出。

输入

测试数据有多组,输入n(1<=n<=20),接着输入n个数。

输出

对于每组输入,输出交换后的结果。

样例输入 Copy
2
1 3
样例输出 Copy
3 1
while 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

提交

解决: 168提交量: 224统计

题目描述

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 3
n=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

提交

解决: 80提交量: 263统计

题目描述

有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 100
while 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()函数中的分组排序就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值