SRM611 Div2 Easy "InterestingNumber"
問題
TopCoder Statistics - Problem Statement
訳
キツネのシエルは41312432という数字は面白いなぁと思っている。なぜならその数字は次のような性質を持っているからである。2つある「1」という数字は「1」つの数字を間に挟んでいる。2つある「2」という数字は「2」つの数字を間に挟んでいる。2つある「3」という数字は(ry
正確には、数字Xが次のような性質を持っていたら、彼は面白いなぁと感じるようである。Dは0~9とする。Xには全てのDは、まったく含んでいないか、ちょうど2つ含んでいる。その2つのDの間にはD個だけ数字がある。
あなたは正の整数を表す文字列 x が与えられる。シエルがこの数字を面白いなぁと感じるようであれば"Interesting"を、そうでなければ"Not interesting"を返せ。
制約
1 <= x <= 1000000000
xは0で始まらない
考えたこと
やるだけ
ソースコード
int x[11]; class InterestingNumber { public: string isInteresting(string X) { int N = X.size(); for (int i = 0; i < N; i++) { x[i] = X[i] - '0'; } int cnt[10]; memset(cnt, 0, sizeof(cnt)); for (int i = 0; i < N; i++) { cnt[x[i]]++; } // 0~9は0個または2個あるか? for (int i = 0; i < N; i++) { if (cnt[i] != 0 && cnt[i] != 2) return "Not interesting"; } // 数字Dの間の数字はD個あるか? for (int i = 0; i < N; i++) { int a = i - x[i] - 1; int b = i + x[i] + 1; bool b1 = a >= 0 && x[a] == x[i]; bool b2 = b < N && x[b] == x[i]; if (!b1 && !b2) return "Not interesting"; } return "Interesting"; } };