1.2024_CA_省C 训练士兵
贪心,排序
问题描述
在蓝桥王国中,有 n 名士兵,这些士兵需要接受一系列特殊的训练,以提升他们的战斗技能。对于第 i 名士兵来说,进行一次训练所需的成本为 pi 枚金币,而要想成为顶尖战士,他至少需要进行 ci 次训练。
为了确保训练的高效性,王国推出了一种组团训练的方案。该方案包含每位士兵所需的一次训练,且总共只需支付 S 枚金币(组团训练方案可以多次购买,即士兵可以进行多次组团训练)。
作为训练指挥官,请你计算出最少需要花费多少金币,才能使得所有的士兵都成为顶尖战士?
输入格式
第一行包含两个整数 n 和 S,表示士兵的数量和进行一次组团训练所需的金币数。
接下来的 n 行,每行包含两个整数 pi 和 ci,表示第 i 名士兵进行一次训练的金币成本和要成为顶尖战士所需的训练次数。
输出格式
输出一个整数,表示使所有士兵成为顶尖战士所需的最少金币数。
样例输入
3 6
5 2
2 4
3 2
样例输出
16
import os
import sys
# 请在此输入您的代码
n,s = input().split()
p = []
n = int(n)
s = int(s)
m = 0
for i in range(n):
pi,ci = input().split()
p.append([int(pi),int(ci)])
m += int(pi)
#输入
res = 0
pos = 0 #当前训练次数
p.sort(key = lambda x : x[1])#按升序排序训练次数
#次数少的士兵会先训练完,所以按升序排序可以尽可能的使用更多的团购次数(如果优惠)
for i in range(n):
if m >= s:
#团购更优惠,m代表当前剩余所有士兵单独训练一次所需的金币
res += s * (p[i][1] - pos)
else:
#单独训练更优惠
res += m * (p[i][1] - pos)
pos = p[i][1] #更新训练次数
m -= p[i][0] #更新单独训练所需的金币总和
print(res)
2.2024_穿越时空之门
枚举
问题描述
随着 2024 年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。
在二进制的领域里,勇者的力量被转换成了力量数值的二进制表示中各数位之和。
在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。
穿越这扇时空之门的条件是严苛的:当且仅当勇者在二进制领域的力量等同于四进制领域的力量时,他才能够成功地穿越。
国王选定了小蓝作为领路人,带领着力量值从 1 到 2024 的勇者们踏上了这段探索未知的旅程。作为小蓝的助手,你的任务是帮助小蓝计算出,在这 2024 位勇者中,有多少人符合穿越时空之门的条件。
import os
import sys
n = 1
res = 0
def check(n: int,p: int):
m = n
r = 0
while m:
if m % p == 1:
r += 1
m //= p
return r
for i in range(n, 2025):
if check(i, 2) == check(i, 4):
res += 1
print(res)
3.2024_数字串个数
数学,排列组合
问题描述
小蓝想要构造出一个长度为 10000 的数字字符串,有以下要求:
-
小蓝不喜欢数字 0,所以数字字符串中不可以出现 0;
-
小蓝喜欢数字 3 和 7,所以数字字符串中必须要有 3 和 7 这两个数字。
请问满足题意的数字字符串有多少个?这个数字会很大,你只需要输出其对 10**9+7 取余后的结果。
import os
import sys
# 请在此输入您的代码
#用总的次数 - 不包含3的 - 不包含7的 + 既不包含3也不包含7的(因为这部分减了两次)
n = 9**10000 - 2*8**10000 + 7**10000
mod = 10**9 + 7
print(n%mod)
4.召唤数学精灵
找规律
问题描述
数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。
累加法仪式 A(n)是将从 1 到 n 的所有数字进行累加求和,即:A(n)=1+2+⋯+累乘法仪式 B(n) 则是将从 1 到 n 的所有数字进行累乘求积,即:B(n)=1×2×⋯×n据说,当某个数字 i 满足 A(i)−B(i) 能被 100整除时,数学精灵就会被召唤出来。
现在,请你寻找在 1 到 2024041331404202 之间有多少个数字 i,能够成功召唤出强大的数学精灵。
先输出1000以内的数看看有什么规律1,3,24,175,199,200,224,375,399,400,424,575,599,600,624,775,799,800,824,975,999,1000, 每两百个数末尾以24,75,99,00,除了1和3,直接计算得出结果。
2084

被折叠的 条评论
为什么被折叠?



