上海市计算机学会竞赛 2023.1 丙组月赛
T1 实验日志
题目描述
小爱正在完成一个物理实验,为期 n n n天,其中第 i i i天,小爱会记录
a i a_i ai 条实验数据在实验日志中。
已知小爱的实验日志每一页最多纪录 m m m条数据,每天做完实验后他都会将日志合上,第二天,他便从第一页开始依次翻页,直到找到第一个有空白位置的页码为止,开始新一天的数据记录。
请问在整个实验过程中,小爱每天为了找到第一个空白位置,需要翻多少页?
输入格式
输入共两行
第一行,两个正整数 n , m n , m n,m。
第二行, n n n个正整数,表示每天的数据条数。
输出格式
输出共一行, n n n个正整数,分别表示每一天开始实验前,需要翻的页数。
数据范围
对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 10 1\leq n\leq 10 1≤n≤10
对于 60 % 60\% 60% 的数据, 1 ≤ n ≤ 1 0 4 1 \leq n\leq 10^4 1≤n≤104
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1≤n≤105
1 ≤ m , a i ≤ n 1\leq m,a_i\leq n 1≤m,ai≤n
样例数据
输入:
4 10
7 8 5 12
输出:
0 0 1 2
说明:
第一天不用翻页
第二天开始前,由于只记了7条,仍是从第一页开始,不用翻页
第三天开始前,共记录了15条,则是从第二页开始,需翻1页
第四天开始前,共记录了20条,由于第二页已写满,则是从第三页开始,需翻2页
思路
直接加上除以一下页数输出即可
代码
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10;
int n , m , a[MAXN] , temp;
int main(){
cin >> n >> m;
for(int i = 1; i <= n; ++i){
cin >> a[i];
cout << temp / m << " ";
temp += a[i];
}
return 0;
}
T2 凯撒加密
题目描述
恺撒密码是一种广为人知的加密技术。恺撒把需要加密的字母按字母表向后移动 33 位,替换成密文字母。例如,所有的 A 将被变成 D,B 变成 E 等等。若要加密最后三个字母,则需要折回到前三个字母,比如 x 变 a,y 变 b,z 变 c。
例如以下明文
T h e Q u i c k B r o w n F o x J u m p s O v e r T h e L a z y D o g TheQuickBrownFoxJumpsOverTheLazyDog TheQuickBrownF

本文介绍了几道编程竞赛题目,包括管理实验日志时如何计算翻页次数,使用凯撒加密技术对文本进行加密,解决找零问题以最大化售出的票数,以及计算积木染色的方案数。这些问题涉及算法设计和数学思维,是编程竞赛中常见的问题类型。
3097

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



