CCF-CSP第一题真题python参考答案(2013.12-2023.12)

 真题链接如下:

​​​​​​​首页 - 计算机软件能力认证考试系统icon-default.png?t=N7T8http://118.190.20.162/home.page准备CSP考试的时候把第一题都刷了一遍,都是用python自己实现的,不是最佳解,但测评都是100分,仅供参考。

目录

2013.12 出现次数最多的数

2014.03 相反数

2014.09 相邻数对

2014.12 门禁系统

2015.03 图像旋转

2015.09 数列分段

2015.12 数位之和

2016.04 折点计数

2016.09 最大波动

2016.12 中间数

2017.03 分蛋糕

2017.09 打酱油

2017.12 最小差值

2018.03 跳一跳

2018.09 卖菜

2018.12 小明上学

2019.03 小中大

2019.09 小明种苹果

2019.12 报数

2020.06 线性分类器

2020.09 称检测点查询

2020.12 期末预测之安全指数

2021.04 灰度直方图

2021.09 数组推导

2021.12 序列查询

2022.03 未初始化警告

2022.06 归一化处理

2022.09 如此编码

2022.12 现值计算

2023.03 田地丈量

2023.05 重复局面

2023.09 坐标变化(其一)

2023.12 仓库规划

2013.12 出现次数最多的数

n = int(input())
nums = list(map(int,input().split()))
count = 0
result = nums[0]
for each in set(nums):
    if nums.count(each) > count:
        result = each
        count = nums.count(each)
    if nums.count(each) == count:
        result = min(each,result)

print(result)

2014.03 相反数

n = int(input())
nums = list(map(int,input().split()))

result = 0
for each in nums:
    if -each in nums:
        result +=1

print(result//2)

2014.09 相邻数对

n = int(input())
nums = list(map(int,input().split()))
result = 0
for each in nums:
    if each+1 in nums:
        result += 1

print(result)

2014.12 门禁系统

n = int(input())
nums = list(map(int,input().split()))
for i in range(len(nums)):
    print(nums[:i].count(nums[i])+1,end=' ')

2015.03 图像旋转

n,m = map(int,input().split())
matrix = []
for i in range(n):
    matrix.append(list(map(int,input().split())))

result = []

for i in range(m-1,-1,-1):
    temp = []
    for j in range(n):
        temp.append(matrix[j][i])
    result.append(temp)

for i in range(len(result)):
    for j in range(len(result[i])):
        if j==len(result[i])-1:
            print(result[i][j])
        else:
            print(result[i][j],end=' ')

2015.09 数列分段

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

2015.12 数位之和

n = str(input())
arr = [int(n[i]) for i in range(len(n))]
result = sum(arr)

print(result)

2016.04 折点计数

n = int(input())
nums = list(map(int,input().split()))
result = 0
for i in range(1,len(nums)-1):
    if (nums[i]-nums[i-1]>0 and nums[i]-nums[i+1]>0) or (nums[i]-nums[i-1]<0 and nums[i]-nums[i+1]<0):
        result += 1

print(result)

2016.09 最大波动

n = int(input())
nums = list(map(int,input().split()))
flutuate = 0
for i in range(1,n):
    if abs(nums[i]-nums[i-1])>flutuate:
        flutuate = abs(nums[i]-nums[i-1])
print(flutuate)

2016.12 中间数

n = int(input())
nums = list(map(int,input().split()))
nums.sort()
medium = nums[n//2]

# 左边元素的个数==右边元素的个数
# medium第一次出现的index == (n-1)-(index+(count-1))
if 2*nums.index(medium) == n-nums.count(medium):
    print(medium)
else:
    print(-1)

2017.03 分蛋糕

n,k = map(int,input().split())
nums = list(map(int,input().split()))
people = 0
temp = 0
for i in range(n):
    temp += nums[i]
    if temp>=k:
        people+=1
        temp = 0
    elif i==n-1:
        people+=1

print(people)

2017.09 打酱油

n = int(input())
result = 0
while n>=50:
    n -= 50
    result += 7
while n>=30:
    n -= 30
    result += 4

result += n//10

print(result)

2017.12 最小差值

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

2018.03 跳一跳

nums = list(map(int,input().split()))
addition = 0
result = 0
for i in range(len(nums)):
    if nums[i]==1:
        result += 1
        addition = 2
    if nums[i]==2:
        if i==0:
            result += 2
            addition = 4
        else:
            result += addition
            addition += 2
print(result)

2018.09 卖菜

n = int(input())
nums = list(map(int,input().split()))
result = []
for i in range(n):
    if i==0:
        print(sum([nums[0],nums[1]])//2, end=' ')
    elif i==n-1:
        print(sum([nums[i],nums[i-1]])//2, end='')
    else:
        print(sum([nums[i-1],nums[i],nums[i+1]])//3, end=' ')

2018.12 小明上学

r, y, g = map(int,input().split())
n = int(input())
result = 0
for i in range(n):
    k,t = map(int,input().split())
    if k==0 or k==1:
        result += t
    if k==2:
        result += t+r

print(result)

2019.03 小中大

n = int(input())
nums = list(map(int,input().split()))
if n %2==0:
    # 如果是中位数是整数就直接输出,如果是小数就四舍五入保留一位小数
    if (nums[n//2]+nums[n//2-1])%2==0:
        medium = (nums[n//2]+nums[n//2-1])//2
    else:
        medium = round((nums[n//2]+nums[n//2-1])/2.0,1)
else:
    medium = nums[n//2]

print(max(nums[-1],nums[0]),medium,min(nums[-1],nums[0]))

2019.09 小明种苹果

n,m = map(int,input().split())
apples = []
P = 0
k = 0
for i in range(n):
    nums = list(map(int,input().split()))
    drop = abs(sum(nums[1:]))
    apples.append([nums[0]-drop,drop])
    if drop>P:
        k = i
        P = drop

T = sum([apples[i][0] for i in range(n)])
print(T,k+1,P)

2019.12 报数

n = int(input())
result = [0]*4

i = 1
while n>0:
    if i%7==0:
        result[i%4-1] += 1
    elif '7' in [str(i)[j] for j in range(len(str(i)))]:
        result[i % 4 - 1] += 1
    else:
        n -= 1
    i += 1

for each in result:
    print(each)

2020.06 线性分类器

# coding:utf-8
n,m = map(int,input().split())
point = []
line = []
for i in range(n):
    x,y,type = map(str,input().split())
    point.append([int(x),int(y),type])

for i in range(m):
    line.append(list(map(int,input().split())))

for eachl in line:
    flag = 'Yes'
    if eachl[2]==0:  # 直线平行于y轴。分左右:分x大于小于直线上的值
        if point[0][0] > -eachl[0]/eachl[1]:  # A都在直线右边
            for i in range(len(point)):
                if (point[i][0] < -eachl[0]/eachl[1] and point[i][2]==point[0][2]) or (point[i][0] > -eachl[0]/eachl[1] and point[i][2]!=point[0][2]):
                    flag = 'No'
                    break

        elif point[0][0] < -eachl[0]/eachl[1]:  # A都在直线右边
            for i in range(len(point)):
                if (point[i][0] > -eachl[0]/eachl[1] and point[i][2]==point[0][2]) or (point[i][0] < -eachl[0]/eachl[1] and point[i][2]!=point[0][2]):
                    flag = 'No'
                    break

    else:  # 分上下:相同x值,分y大于小于直线上的值
        if point[0][1] > (eachl[0] + eachl[1]*point[0][0])/(-eachl[2]):  # A都在直线上方
            for i in range(len(point)):
                if (point[i][1] < (eachl[0] + eachl[1]*point[i][0])/(-eachl[2]) and point[i][2]==point[0][2]) or (point[i][1] > (eachl[0] + eachl[1]*point[i][0])/(-eachl[2]) and point[i][2]!=point[0][2]):
                    flag = 'No'
                    break
        elif point[0][1] < (eachl[0] + eachl[1]*point[0][0])/(-eachl[2]):
            for i in range(len(point)):
                if (point[i][1] > (eachl[0] + eachl[1]*point[i][0])/(-eachl[2]) and point[i][2]==point[0][2]) or (point[i][1] < (eachl[0] + eachl[1]*point[i][0])/(-eachl[2]) and point[i][2]!=point[0][2]):
                    flag = 'No'
                    break

    print(flag)

2020.09 称检测点查询

n,x,y = map(int,input().split())
position = []
for i in range(n):
    position.append(list(map(int,input().split())))

nearist = []

for i in range(n):
    length = (position[i][0] - x) ** 2 + (position[i][1] - y) ** 2
    if len(nearist)<3:
        nearist.append([length, i+1])

    elif length < max([nearist[x][0] for x in range(3)]):
        tempindex = nearist.index(max(nearist))
        nearist[tempindex] = [length,i+1]

sorted_index = sorted(nearist,key=lambda x:(x[0],x[1]))

for i in range(3):
    print(sorted_index[i][1])

2020.12 期末预测之安全指数

n = int(int(input()))
sum = 0
for i in range(n):
    w,score = map(int,input().split())
    sum += w*score

print(max(0,sum))

2021.04 灰度直方图

n,m,L = map(int,input().split())
matrix = []
for i in range(n):
    matrix.extend(list(map(int,input().split())))

result = []
for i in range(L):
   if i==L-1:
       print(matrix.count(i),end='')
   else:
       print(matrix.count(i),end=' ')

2021.09 数组推导

n = int(input())
B = list(map(int,input().split()))
maxsum = sum(B)
minsum = sum(B)
for i in range(1,len(B)):
    if B[i]==B[i-1]:
        minsum -= B[i]

print(maxsum)
print(minsum)

2021.12 序列查询

n, N = map(int,input().split())
A = [0]
A.extend(list(map(int,input().split())))

sum = 0
for j in range(1,len(A)):
    sum = sum + (A[j] - A[j-1])*(j-1)

sum += (N-A[-1])*A.index(A[-1])

print(sum)

2022.03 未初始化警告

# -*- coding:utf-8 -*-
n,k = map(int,input().split())
left = set()
result = 0
for i in range(k):
    x,y = map(int,input().split())
    if y != 0 and y not in left:  # right中0为常数
        result += 1
    left.add(x)

print(result)

2022.06 归一化处理

n = int(input())
a = list(map(int,input().split()))

avg = sum(a)/n
D = 1/n * sum([(a[i]-avg)**2 for i in range(n)])
genD = D**(1/2)

for i in range(n):
    fa = (a[i]-avg)/genD
    print(fa)

2022.09 如此编码

n,m = map(int,input().split())
an = list(map(int,input().split()))

c = [1]
for i in range(n):
    newc = 1
    for j in range(i+1):
        newc*=an[j]
    c.append(newc)

b = [0]*n
for i in range(n):
    b[i] = (m%c[i+1] - sum([c[j]*b[j]for j in range(i)]))//c[i]


for i in range(len(b)):
    if i==len(b)-1:
        print(b[i],end='')
    else:
        print(b[i],end=' ')

2022.12 现值计算

n, i = map(float,input().split())
n = int(n)
prospect = list(map(int,input().split()))

result = 0
for j in range(n+1):
    result += prospect[j]*(1+i)**(-j)

print('%.3f' %result)

2023.03 田地丈量

n, a, b = map(int,input().split())
position=[]
for i in range(n):
    position.append(list(map(int,input().split())))

result = 0
for i in range(n):
    x = 0
    y = 0
    if position[i][0]>0 and position[i][0]<a:
        x = min(a,position[i][2])-position[i][0]
    elif position[i][2]>0 and position[i][2]<a:
        x = position[i][2]-max(0,position[i][0])
    if position[i][1]>0 and position[i][1]<b:
        y = min(b,position[i][3])-position[i][1]
    elif position[i][3]>0 and position[i][3]<b:
        y = position[i][3]-max(0,position[i][1])
    result += x*y

print(result)

2023.05 重复局面

n = int(input())
situation=[]
for i in range(n):
    temp = ''
    for j in range(8):
        temp += input()
    situation.append(temp)


for i in range(n):
    print(situation[:i+1].count(situation[i]))

2023.09 坐标变化(其一)

n,m = map(int,input().split())
d = []
pos =[]
for i in range(n):
    d.append(list(map(int,input().split())))
for i in range(m):
    x,y = map(int,input().split())
    for j in range(n):
        x += d[j][0]
        y += d[j][1]
    pos.append([x,y])

for each in pos:
    print(each[0],each[1])

2023.12 仓库规划

n, m = map(int,input().split())
storage = []
for i in range(n):
    temp = list(map(int,input().split()))
    storage.append(temp)

result = []

for each in storage:
    for i in range(len(storage)):
        flag = True
        for j in range(m):
            if storage[i][j]<=each[j]:
                flag = False
        if flag == True:
            result.append(i+1)
            break
    else:
        result.append(0)

for each in result:
    print(each)
  • 32
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值