美文网首页
蓝桥杯0313-python初级真题

蓝桥杯0313-python初级真题

作者: 旭Louis | 来源:发表于2022-03-21 17:49 被阅读0次

(注 input()输入函数的括号中不允许添加任何信息) 编程实现:

给定一个正整数N,输出N个连续星号 ”*”

输入描述

输入一个正整数N,表示星号的个数

输出描述

输出N个连续星号

# 2203PC01

N = int(input())

for i in range(0,N):
    print("*", end="")

(注 input()输入函数的括号中不允许添加任何信息)

编程实现:

给定一个小写字母,输出其对应的大写字母。

输入描述

输入一个小写字母

输出描述

输出小写字母对应的大写字母

# 2203PC02

s = input()

print(s.upper())

(注 input()输入函数的括号中不允许添加任何信息)
编程实现:

给定一个正整数N,和M个不同的正整数。然后将M个正整数中任意两个数进行组合,且求出每组组合的和.问M个正整数中有多少组组合的和恰好等于N。

如:正整数N为6,M为5,5个不同的正整数分别为1,2,3,4,5。

任意两数组合有10组:1+2,1+3,1+4,1+5,2+3,2+4,2+5,3+4,3+5,4+5
其中和正好等于6的组合有2组:1+5,2+4

输入描述

第一行输入一个正整数N

第二行输入M个不同的正整数,且正整数之间以一个英文逗号隔开

输出描述

输出M个不同的正整数中有多少组组合的和恰好等于N

样例输入

5
1,2,3,4,5

样例输出

2
# 2203PC03

from itertools import combinations
N = int(input())
num_list = input().split(",")

num_list = [int(i) for i in num_list]

total = 0
for coupe in combinations(num_list,2):
    if sum(coupe) == N:
        total += 1
print(total)

编程实现:

有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。

计算出最少调整几次可以使每个小朋友手中的糖果数量都相同。

调整规则如下:

  • 规则1:每个小朋友的糖果只能调整到左右相邻的两个小朋友手中;
  • 规则2:第一个小朋友的糖果只能调整到第二个小朋友手中;
  • 规则3:最后一个小朋友的糖果,只能调整到倒数第二个小朋友手中。

糖果数量: 6 4 ... ... 2

编号: 1 2 ... ... N

例如:1-3号小朋友手中原有的糖果数量分别为6, 4, 2

  1. 1号小朋友拿出两块给2号小朋友;
  2. 2号小朋友拿出两块给3号小朋友;

两次调整后三个小朋友手中的糖果分别为4, 4, 4.

即按照调整规则最少操作2次可以使3个小朋友手中糖果数量都相同。

现按照顺序给出第1~N个小朋友手中原有糖果数量,按照调整规则计算出最少调整几次可以使N个小朋友手中的糖果数量都相同。

输入描述

输入N个正整数(1<正整数<100),表示从1到N号小朋友手中原有糖果数量,正整数之间以一个英文逗号隔开,且所有正整数之和是N的倍数。

输出描述

按照调整规则计算出最少操作几次可以使N个小朋友手中糖果数量都相同。

样例输入

6, 4, 2

样例输出

2
# 2203PC04

num_list = input().split(",")
num_list = [int(i) for i in num_list]
step = 0
max_num = max(num_list)
count = len(num_list)
avg = sum(num_list) // count

# 从左到右
for i in range(count):
    if num_list[i] > avg and i<=count-2:
        step += 1
        need =  (count-i-1)*avg - sum(num_list[i+1:])
        if need >= (num_list[i] - avg):
            num_list[i+1] += num_list[i] - avg
            num_list[i] = avg
        else:
            num_list[i+1] += need
            num_list[i] -= need

# 从右到左
for i in range(count):
    if num_list[count-i-1] > avg and i<=count-2:
        step += 1
        need =  (count-i-1)*avg - sum(num_list[:count-i-1])
        if need >= (num_list[count-i-1] - avg): 
            num_list[count-i-2] += num_list[count-i-1] - avg
            num_list[count-i-1] = avg
        else:
            num_list[count-i-2] += need
            num_list[count-i-1] -= need

# print(num_list)
print("调整次数:", step)

相关文章

网友评论

      本文标题:蓝桥杯0313-python初级真题

      本文链接:https://www.haomeiwen.com/subject/lsytjrtx.html