CCF-CSP 第一题python实现

201312-1 出现次数最多的数

# input() 接收任意输入,将所有输入默认为字符串处理,并返回字符串类型。
# input().split()接收多个值
# list列表,类似于数组,分为值和索引
n = int(input())
a = list(map(int, input().split()))
a.sort() #永久排序
total = 0
index = 0
# a.count() 统计某个元素在列表中出现的次数
for i in range(n):
   if a.count(a[i]) > total:
       total = a.count(a[i])
       index = i
print(a[index])

201403-1 相反数

n = int(input())
a = list(map(int, input().split()))
a.sort()
total = 0
left = 0
right = n-1
while left < right:
    if -a[left] == a[right]:
        total += 1
        left += 1
        right -= 1
    elif -a[left] > a[right]:
        left += 1
    else:
        right -= 1
print(total)

201409-1 相邻数对

n = int(input())
a = list(map(int,input().split()))
a.sort()
total = 0
for i in range(n-1):
    if a[i]+1 ==a[i+1]:
        total += 1
print(total)

201412-1 门禁系统

# 可以用数组切片!!切片前闭后开~
n = int(input())
a = list(map(int, input().split()))
b = [0]*n #这里的b列表里需要有元素
for i in range(n):
    b[i] = a[:i+1].count(a[i])

for i in b:
    print(i, end=' ')

201503-1 图像旋转

n, m = map(int, input().split())
b = []
for i in range(n):
    a = list(map(int, input().split()))[::-1] # [::-1]将列表逆序
    b.append(a)
for i in range(m):
    for j in range(n):
        print(b[j][i], end=' ')
    print()

201509-1 数列分段

n = int(input())
a = list(map(int,input().split()))
total = 1
for i in range(n-1):
    if a[i] != a[i+1]:
        total += 1
print(total)

201512-1 数位之和

n = int(input())
sum = 0
while n:
    sum += n%10
    n //= 10
print(sum)

201604-1 折点计数

n = int(input())
a = list(map(int,input().split()))
total = 0
for i in range(n-1):
    if i!=0:
        if (a[i]<a[i-1] and a[i]<a[i+1]) or (a[i]>a[i+1] and a[i]>a[i-1]):
            total +=1
print(total)

201609-1 最大波动

n = int(input())
a = list(map(int, input().split()))
max = -10000
for i in range(n-1):
    if abs(a[i+1]-a[i])>max:
        max = abs(a[i+1]-a[i])
print(max)

201612-1 中间数

n = int(input())
a = list(map(int, input().split()))
a.sort()
small = 0
large = 0
for i in range(n):
    if a[i] > a[int(n/2)]:
        small += 1
for i in range(n):
    if a[i] < a[int(n/2)]:
        large += 1
if small == large:
    print(a[int(n/2)])
else:
    print(-1)

201703-1 分蛋糕

n, m = map(int, input().split())
a = list(map(int, input().split()))
total = 1
sum = a[0]
for i in range(n-1):
    if sum >= m:
        total += 1
        sum = a[i+1]
    else:
        sum += a[i+1]
print(total)

201709-1 打酱油

n = int(input())
print(n//10 + ((n//10)//5)*2 + (((n//10)%5))//3)

201712-1 最小差值

n = int(input())
a = list(map(int, input().split()))
a.sort()
min = 100000
for i in range(n-1):
    if abs(a[i+1]-a[i]) < min:
        min = abs(a[i+1]-a[i])
print(min)

201803-1 跳一跳

a = list(map(int, input().split()))
sum = 0
for i in range(len(a)):
    if a[i] == 1:
        sum += 1
        flag = 0
    if a[i] == 2:
        if i == 0 or a[i-1] == 1:
            sum += 2
            flag = 1
        else:
            flag += 1
            sum += 2*flag
    if a[i] == 0:
        print(sum)

201809-1 卖菜

n = int(input())
a = input().split()
for i in range(n):
    a[i] = int(a[i])
b = [] #空列表,列表中的元素可以有多个,也可以一个都没有
for i in range(n):
    if i == 0:
        b += [(int)((a[i] + a[i+1])/2)]
    elif i == n-1:
        b += [(int)((a[i-1] + a[i])/2)]
    else:
        b += [(int)((a[i-1] + a[i] + a[i+1])/3)]

# 规范输出
    if i==0:
        print(b[0], end='')
    else:
        print('', b[i], end='')

201812-1 小明上学

# 注意要将数值转换成整型
r, y, g = input().split()
r, y, g = int(r), int(y), int(g)
n = int(input())
s = 0
for i in range(n):
    k, t = input().split()
    k, t = int(k), int(t)
    if k == 0:
        s += t
    elif k == 1:
        s += t
    elif k == 2:
        s += t+r
    else:
        pass
print(s)

201903-1 小中大

n = int(input())
a = list(map(int,input().split())) #map根据提供的函数对指定序列做映射,使用list() 转换为列表

if n % 2 == 0:
    median = (a[n//2-1]+a[n//2]) #//向下取整,/保留小数
    if median % 2 == 0:
        median //= 2 #为了使其输出为整数
    else:
        median /= 2
if n % 2 == 1:
    median = a[n//2]
print(max(a), median, min(a))

201909-1 小明种苹果

# 每迭代一次,获取的是一个新列表
n, m = map(int, input().split())
T = 0  # 最后一轮疏果操作后所有苹果树上剩下的苹果总数
k = 0  # 疏果个数最多的苹果树编号
P = 0  # 每颗苹果树的疏果总数
max = 0 # 疏果数最大的那颗苹果树的疏果总数
for i in range(n):
    a = list(map(int, input().split()))
    P = 0
    for j in range(1, m+1):
        a[0] = a[0] + a[j]
        P += abs(a[j])
    if P > max:
        max = P
        k = i+1
    T += a[0]
print(T, k, max)

201912-1 报数

n = int(input())
a = 0
b = 0
c = 0
d = 0
for i in range(1, 1000000):
    if i % 7 == 0 or '7' in str(i):
        if i % 4 == 1:
            a += 1
        elif i % 4 == 2:
            b += 1
        elif i % 4 == 3:
            c += 1
        else:
            d += 1
    if (i-(a+b+c+d)) >= n:
       break
print(a)
print(b)
print(c)
print(d)

202006-1 线性分类器

listA = []
listB = []
b = []
x = 0
num1 = 0
num2 = 0
n1 = 0
n2 = 0
n, m = map(int, input().split())
for i in range(n):
    a = list(input().split())
    a[0] = int(a[0])
    a[1] = int(a[1])
    a[2] = ord(a[2])
    if a[2] == 65:
        listA.append(a[0:-1])
    if a[2] == 66:
        listB.append(a[0:-1])
for j in range(m):
    b.append(list(map(int, input().split())))
for i in b:
    num1 = 0
    num2 = 0
    n1 = 0
    n2 = 0
    for j in listA:
        if b[x][0]+b[x][1]*j[0]+b[x][2]*j[1] > 0:
            num1 += 1
    for k in listB:
        if b[x][0]+b[x][1]*k[0]+b[x][2]*k[1] < 0:
            num2 += 1
    for j in listA:
        if b[x][0] + b[x][1] * j[0] + b[x][2] * j[1] < 0:
            n1 += 1
    for k in listB:
        if b[x][0] + b[x][1] * k[0] + b[x][2] * k[1] > 0:
            n2 += 1
    if (num1 == len(listA) and num2 == len(listB)) or(n1 == len(listA) and n2 == len(listB)):
        print('Yes')
    else:
        print('No')
    x += 1

202009-1 称检测点查询

n, x_citizen, y_citizen = map(int, input().split())
a = []
b = []
for i in range(n):
    x_point, y_point = map(int, input().split())
    a.append((y_point - y_citizen)**2 + (x_point - x_citizen)**2)

for i in range(3):
    ind = a.index(min(a))
    b.append(ind+1)
    a[ind] = 100000
for i in b:
    print(i)

202012-1 期末预测之安全指数

# 202012-1
n = input()
n = int(n)
y = 0
for i in range(n):
    w, score = list(map(int, input().split()))
    y += w*score
y = max(0, y)
print(y)

202104-1 灰度直方图

# # 202104-1
n, m, L = map(int, input().split())
A = []
a = []
b = []
c = []
big = 0
for i in range(n):
    A = list(map(int, input().split()))
    a.append(A)
for i in a:
    for j in i:
        b.append(j)
big = max(b)


for i in range(big+1):
    if i in b:
        c.append(b.count(i))
    else:
        c.append(0)
for i in c:
    print(i, end=' ')

202109-1 数组推导

# 202109-1
n = int(input())

B = list(map(int, input().split()))
a_max = []
a_min = []
a_max.append(B[0])
a_min.append(B[0])
for i in range(0, len(B)-1):
    if B[i+1] == B[i]:
        a_max.append(B[i+1])
        a_min.append(0)
    else:
        a_max.append(B[i+1])
        a_min.append(B[i+1])
print(sum(a_max))
print(sum(a_min))

202112-1 序列查询

n, N = map(int, input().split())
a = []
a = list(map(int, input().split()))
# 列表insert函数用于将指定对象插入到列表的指定位置。
# list.insert(index, obj)
# index-对象obj需要插入的索引的位置
# obj-要插入列表中的对象
a. insert(0, 0)
sum = 0
f_i = 0
for i in range(1, len(a)):
    sum = sum + (a[i]-a[i-1]) * f_i
    f_i = f_i + 1
sum = sum + (N - a[len(a)-1]) * f_i
print(sum)
  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值