专栏文章
题解:P1061 [NOIP2006 普及组] Jam 的计数法
P1061题解参与者 6已保存评论 6
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @miqikrg3
- 此快照首次捕获于
- 2025/12/04 05:23 3 个月前
- 此快照最后确认于
- 2025/12/04 05:23 3 个月前
题解:P1061 [NOIP2006 普及组] Jam 的计数法
前言
本蒟蒻的第一篇题解,求过。
思路
一道简单的模拟题。
每次 时,从右往左扫描:
- 如果这一位无需进位,则让这一位 ,并且让后面的每一位都变为它左边的一位 ,输出结果;
- 若每一位都需要进位,则说明已经是最后一个 Jam 数字,立刻停止程序。
代码
CPP#include <bits/stdc++.h>
using namespace std;
int s, t, w;
string jam;
int main()
{
cin >> s >> t >> w >> jam;
for (int i = 1; i <= 5; i++) // 最多加 5 次 1
{
bool flag = true; // 记录能不能加 1
for (int j = w - 1; j; j--) // 从右往左扫描
{
if (jam[j] - 'a' + 1 <= j - w + t) // 如果这一位无需进位
{ // 注意在 Jam 数字中第 j 位只能达到 j - w + t
jam[j]++;
for (int k = j + 1; k < w; k++)
{
jam[k] = jam[k - 1] + 1;
}
cout << jam << endl;
flag = false; // 能加 1
break;
}
}
if (flag) // 不能加 1
{
break;
}
}
return 0;
}
相关推荐
评论
共 6 条评论,欢迎与作者交流。
正在加载评论...