真题链接如下:
首页 - 计算机软件能力认证考试系统http://118.190.20.162/home.page准备CSP考试的时候把第一题都刷了一遍,都是用python自己实现的,不是最佳解,但测评都是100分,仅供参考。
目录
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)