Codeforces Round #265 (Div. 2)
質問リンク
A: 数値を変換し、いくつかの違いを比較するだけです
B: 2 つ以上の連続する 0 は 1 つの操作とみなされ、先頭の 0 と最後の 0 the end 無視できます
C: 貪欲に最後から構築します。最初は回文であることが保証されているため、変更後の回文の長さは 2 または 3 のみであることが保証されます。判断の複雑さは非常に小さくなります
D: 暴力 状況を列挙し、判断します
E: 操作を逆にして、各数字に対応する桁数と対応する桁を処理し、for で答えを計算します
コード:
A:
rree
rree
#include <cstdio>#include <cstring>int n, num[105], sb[105];char s[105];int main() { scanf("%d", &n); scanf("%s", s); for (int i = 0; i < n; i++) { num[i] = s[i] - '0'; sb[i] = num[i]; } num[0]++; for (int i = 0; i < n; i++) { if (num[i] == 2) { num[i] = 0; num[i + 1]++; } } int ans = 0; for (int i = 0; i < n; i++) if (sb[i] != num[i]) ans++; printf("%d\n", ans); return 0;}
rree
れー