B3937 [语言月赛 202402] 翻转和反转 题解
icypenguin · · 题解
Source & Knowledge
2024 年 2 月语言月赛,由洛谷网校入门计划/基础计划提供。
出题人题解。
题目大意
有一个串,反复对其做翻转或者反转操作,你需要求出这些操作做完后的串。
题目分析
本题考查对字符串、数组、循环结构的运用。
我们很容易发现,反转两次和翻转两次的结果都不变,并且这两个操作相互独立。于是我们统计反转的次数与翻转的次数。如果反转的次数是一个奇数,那么相当于反转了
cin >> n >> q;
for (long long i = 1; i <= n; i++){
cin >> s[i];
}
for (long long i = 1; i <= q; i++){
char w;
cin >> w;
if (w == '1'){
cnt[1]++;
}else{
cnt[2]++;
}
}
if (cnt[1] % 2 == 1){
ll ct = 1;
for (long long i = n; i >= 1; i--){
s2[ct] = s[i];
ct++;
}
for (long long i = 1; i <= n; i++){
s[i] = s2[i];
}
}
if (cnt[2] % 2 == 1){
for (long long i = 1; i <= n; i++){
if (s[i] == '1'){
s[i] = '0';
}else{
s[i] = '1';
}
}
}
for (long long i = 1; i <= n; i++){
cout << s[i];
}
视频题解