問題概要
文字列$S$が与えられる。$S[i]$(1-index)をiだけ小さいアルファベットに変える。(B→A,A→Zのように) 変更後の文字列を出力せよ。
$|S|\leqq1024$
解法
mod26するだけ。
計算量:$O(|S|)$
ソース
#include <bits/stdc++.h> using namespace std; using VS = vector<string>; using LL = long long; #define SZ(a) int((a).size()) #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++) LL N; LL ans = 0LL; int main() { cin.tie(0); ios_base::sync_with_stdio(false); string s; cin >> s; FOR(i, 0, SZ(s)) { int dec = (i + 1) % 26; int n = s[i] - 'A'; int add = (26 + n - dec) % 26; s[i] = 'A' + add; } cout << s << "\n"; return 0; }