sum=0for i inrange(1,20230409):
sum+=i
print(sum)#204634714038436
结果:204634714038436
试题B:分糖果
defdfs(x, a, b):#x表示第几个小朋友,a表示第一种糖果数量;b表示第二种糖果数量globalsum#计数if x == 8:#当前为第8个小朋友if a == 0and b == 0:#两种糖果都分完了# 如果七个人恰好分完则计数加一sum += 1returnfor i inrange(a + 1):
for j inrange(b + 1):
if i + j >= 2and i + j <= 5:
# 只有满足2-5的条件才可以
dfs(x + 1, a - i, b - j)
sum = 0
dfs(1, 9, 16)
print(sum)
最后结果:5067671
试题C:三国游戏
题解:贪心
列举三个国家分别获胜的情况下,最大的事件数,取最大值
n = int(input())#读入n
a = list(map(int, input().split()))#读入Ai
b = list(map(int, input().split()))#读入Bi
c = list(map(int, input().split()))#读入Cidefget(x, y, z):#在x获胜的情况下,最多发生多少个事件
t = [x[i] - y[i] - z[i] for i inrange(n)]# 计算 x 获胜对结果的贡献
t.sort(reverse=True)# 将贡献按降序排序for i inrange(n):
t[i] += t[i - 1] if i > 0else0# 计算累积贡献和if t[i] <= 0:# 返回在累积贡献和变为非正之前发生的事件数return i
return n # 如果所有事件都可以发生,返回 n
res = max(get(a, b, c), get(b, a, c), get(c, a, b))# 计算每种获胜情况下的最大事件数,并选择最大值print(-1if res == 0else res) # 打印结果(如果没有事件发生则为 -1,否则为最大事件数)
试题D:平均
题解
n = int(input()) # 输入数据组数
s = [[] for i inrange(10)] # 创建一个长度为10的空列表,用于存储输入数据for i inrange(n):
a, b = map(int, input().split()) # 输入a和b
s[a].append(b) # 将b添加到对应索引的子列表中for i inrange(10):
s[i].sort() # 对每个子列表进行排序
res, c = 0, n // 10# 初始化多余代价为0,计算每个子列表允许的最大长度for i inrange(10):
iflen(s[i]) > c: # 如果子列表的长度超过允许长度
res += sum(s[i][:len(s[i]) - c]) # s[i]表示当前超过长度的子列表,总长度减去标准长度c等于要去掉的,统计排序号的当前列表要删去的值,并累加到多余代价中print(res) # 输出多余代价
试题E:填充
题解
分析:先读入串,遍历串,每一个?都可以选择0/1,统计子串数并更新为较大的输出
s = input()
cnt = 0
i = 0while i < len(s) - 1:
if s[i] == s[i + 1] or s[i] == '?'or s[i + 1] == '?':
cnt += 1#两个相邻字符相同总数加1
i += 2#由于要求互不重叠,当有相同字符时,直接移2步else:#不相等的情况移一步
i += 1print(cnt)
试题F:棋盘
题解:暴力
#用一个二维数组存棋盘,根据读入的坐标将对应的棋子取反
n,m=map(int,input().split())
#根据n生成一个全白的棋盘
x=[[0]*n for _ inrange(n)]
#读入操作for i inrange(m):
a,b,c,d=map(int,input().split())
for j inrange(a-1,c):
for k inrange (b-1,d):
if x[j][k]==0:
x[j][k] = 1else:
x[j][k] = 0print(''.join(str(x) for x in x[0]))
print(''.join(str(x) for x in x[1]))
print(''.join(str(x) for x in x[2]))
题解:二维差分
n, m = map(int, input().split())
g = [[0] * (n + 2) for _ inrange(n + 2)]#初始化二维差分数组#构建二维差分数组for _ inrange(m):
x1, y1, x2, y2 = map(int, input().split())
g[x1][y1] += 1
g[x2 + 1][y1] -= 1
g[x1][y2 + 1] -= 1
g[x2 + 1][y2 + 1] += 1#根据二维差分数组得到前缀和数组for i inrange(1, n + 1):
for j inrange(1, n + 1):
g[i][j] += g[i - 1][j] + g[i][j - 1] - g[i - 1][j - 1]
for i inrange(1, n + 1):
for j inrange(1, n + 1):
if g[i][j] % 2==0:#如果操作次数为偶数,棋子为白print(0, end="")
else:#如果操作次数为奇数,棋子为黑print(1, end="")
print()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性