B - 手芸王 | AtCoder Beginner Contest 023
B - 手芸王 | AtCoder Beginner Contest 023
解法
最終的に行うことは正しく生成された場合のN文字の文字列との一致検証.
コーナーケース検討
手順0の場合のみ手順3nとは違う操作なので注意.
手順通り行うと偶数文字になることはない.
実装
試行数を問われているので,以下のres
のようにループのインデックスをループの外で宣言することでその値を利用する.
int N; cin >> N;
string S; cin >> S;
string ans = "b";
int res = 0;
for(res = 1; ans.size() < N; res++) {
if (res % 3 == 1) ans = 'a' + ans + 'c';
else if (res % 3 == 2) ans = 'c' + ans + 'a';
else ans = 'b' + ans + 'b';
}
if (ans == S) cout << res << endl;
else cout << -1 << endl;
return 0;