上海市计算机学会月赛 2022年6月月赛丙组

本文介绍了2022年6月上海市计算机学会月赛丙组的比赛题目,包括邮票问题、密码解锁、模糊匹配、连续的零和平整序列等。涉及算法和编程技巧,如最优化邮票组合、密码输入限制和等待时间计算、模糊匹配算法、寻找连续零的最少修改次数以及平整序列的调整策略。
摘要由CSDN通过智能技术生成

上海市计算机学会月赛 2022年6月月赛丙组


邮票问题

内存限制: 256 Mb时间限制: 1000 ms
题目描述
有四种面值的邮票,分别是 20 元,10 元,5 元,1 元,如果要在包裹上贴价格恰好为 n 元的邮票,最少需要多少张邮票?

输入格式
单个整数表示 n。

输出格式
单个整数表示邮票的最少张数。

数据范围
对于 50% 的数据, 1 ≤ n ≤ 1 , 000 1≤n≤1,000 1n1,000
对于 100% 的数据, 1 ≤ n ≤ 1 , 000 , 000 1≤n≤1,000,000 1n1,000,000
样例数据
输入:
16
输出:
3
说明:
16=10+5+1

分析:
大的越多,用的越少

#include <iostream>
using namespace std;
int main()
{
   
    ios::sync_with_stdio(false);
    long long n, ans = 0;
    cin >> n;
    while (n >= 20)
    {
   
        n -= 20;
        ++ans;
    }
    
    while (n >= 10)
    {
   
        n -= 10;
        ++ans;
    }
    
    while (n >= 5)
    {
   
        n -= 5;
        ++ans;
    }
    
    while (n)
    {
   
        n -= 1;
        ++ans;
    }
    cout << ans;
    return 0;
}

密码解锁

内存限制: 256 Mb时间限制: 1000 ms
题目描述
现在的密码系统为了防止黑客随意尝试密码从而破解,通常会在输入密码错误时,加入等待时间。

现有一密码系统,当输入密码正确时,系统将被正常打开,无需继续输入密码。

系统提供三次免等待输入机会。即前三次尝试输入密码前,均无需等待任何时间。而若第三次输入密码错误,在第四次尝试输入密码前,系统会令使用者强制等待 1 分钟。第四次输入密码错误,在第五次尝试输入密码前,系统会令使用者强制等待 2 分钟,以此类推。之后每次输入密码之前,均会等待2倍于之前的时间。

该系统最多提供十次密码输入机会,若第十次输入密码依然错误,系统会被锁定,显示Locked。

现给定该系统的正确密码,与每次尝试输入的密码,请你求出用户的总等待时间。

输入格式
输入第一行,一个字符串表示正确密码。
接下来若干行,每行一个字符串表示用户尝试解锁的密码
(输入密码正确或尝试十次导致计算机锁定后,不再输入)

输出格式
输出用户的总等待时间,若因连续十次输入错误导致锁定,则输出Locked

数据范围
数据保证,正确的密码与尝试的密码均只包含大写字母,小写字母与数字字符。

样例数据
输入:
Abcd1234
abcd1234
Abcd1234
输出:
0
说明:
正确密码为Abcd1234。
第二次输入密码正确,故不用等待
输入:
Abcd1234
abcd1234
abcd1345
aaaa1111
abcd4321
Abcd1234
输出:
3
说明:
第四次输入前,等待了一分钟
第五次输入前,等待了两分钟
故共等待3分钟
输入:
Abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
abcd1234
输出:
Locked
分析:
模拟即可,但是的但是,要看仔细,要求没看清楚扣了50分┗|`O′|┛。

#include <string>
#include <iostream>
using namespace std;
int main() {
   
	ios::sync_with_stdio(false);
	cin.tie(0);
	int cnt = 1, Time = 0, t[11] = {
    0, 0, 0, 1 };
	for (int i = 4; i <= 10; ++i)
		t[i] = t[i - 1] * 2;
	string paswad, input;
	cin >> paswad;
	while (cin >> input)
	{
   
		if (input == paswad)
			break;
		Time += t[cnt];
		if (cnt == 10)
		{
   
			cout << "Locked" << endl;
			return 0;
		}
		++cnt;
	}
	cout << Time << endl;
	return 0;
}

模糊匹配

内存限制: 256 Mb时间限制: 1000 ms
题目描述
给定一个字符串 S S S,及一个包含n个字符串的文本库 {T},文本库内字符串分别为 T 1 ,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dsmtyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值