题解:P10312 [SHUPC 2024] 栅栏密码
szh_AK_all · · 题解
直接根据题意模拟即可。
分析
可以记录明文字符串的每一位在行数为
具体参见代码。
Code
#include <bits/stdc++.h>
using namespace std;
int k[15][100005], l[15];
int main() {
int h;
string s;
cin >> h >> s;
string ans = s;//方便设定ans(明文)的长度
int u = 1;
int x = 0;
int f = 1;
for (int i = 0; i < (int)s.size(); i++) {
k[u][++l[u]] = x++;//转换数组
if (u == h)//不断往右上跳
f = -1;
else if (u == 1)//不断往右下跳
f = 1;
u += f;//跳
}
int y = 0;
for (int i = 1; i <= h; i++) {
for (int j = 1; j <= l[i]; j++)
ans[k[i][j]] = s[y++];
}
cout << ans;
}