邮票问题
内存限制: 256 Mb时间限制: 1000 ms
题目描述
有四种面值的邮票,分别是 20 元,10 元,5 元,1 元,如果要在包裹上贴价格恰好为 n 元的邮票,最少需要多少张邮票?
输入格式
单个整数表示 n。
输出格式
单个整数表示邮票的最少张数。
数据范围
对于 50% 的数据, 1 ≤ n ≤ 1 , 000 1≤n≤1,000 1≤n≤1,000;
对于 100% 的数据, 1 ≤ n ≤ 1 , 000 , 000 1≤n≤1,000,000 1≤n≤1,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 ,