上海市计算机学会竞赛 2023.1 丙组月赛

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

上海市计算机学会竞赛 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 1n10
对于 60 % 60\% 60% 的数据, 1 ≤ n ≤ 1 0 4 1 \leq n\leq 10^4 1n104
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\leq n\leq 10^5 1n105

1 ≤ m , a i ≤ n 1\leq m,a_i\leq n 1m,ain
样例数据

输入:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值