問題
問題文
$1$ 以上 $26$ 以下の整数からなる長さ $26$ の数列 $P=(P_1,P_2, \ldots,P_{26})$ が与えられます。ここで、$P$ の要素は相異なることが保証されます。
以下の条件を満たす長さ $26$ の文字列 $S$ を出力してください。
・任意の $i~(1 \le i \le 26)$ について、$S$ の $i$ 文字目は辞書順で小さい方から $P_i$ 番目の英小文字である。
制約
・$1 \le P_i \le 26$
・$P_i \ne P_j~(i \ne j)$
・入力は全て整数である。
回答
回答1 (AC)
各 $i$ に対し、アルファベットの a から数えて $P_i$ 番目のアルファベットを表示することが求められています。アルファベット a を表す文字番号(ASCIIコード)に $P_i-1$ を足したものが、表示するアルファベットの文字番号となります。コードは以下のようになりました。cout で文字コードを変換する方法がわからなかったので、printf 文を使用しました。
abc218b-1.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
for ( int i=0; i<26; i++ ) {
cin >> t;
printf("%c",'a'+t-1);
}
}
調べたこと
AtCoder の解説 → 公式解説
回答1と同じ方針でしたが、cout を使っていました。勉強になります。
リンク
前後の記事
- 前の記事 → AtCoderログ:0111 - ABC 218 A
- 次の記事 → AtCoderログ:0113 - ABC 122 B