Codeforces #189 Div2 A "Magic Numbers"
問題
http://codeforces.com/contest/320/problem/A
訳
マジックナンバーはナンバー1, 14, 144を連結したものである。これらの数値は何回でも使用して連結する事ができる。なので、14144, 141414, 1411はマジックナンバーであるが、1444, 514, 414はそうではない。
あなたにナンバーnが与えられるので、それがマジックナンバーか判定せよ。
制約
1 <= n <= 10^9
考えた事
4がでてきたら、何個前に1が出てきたかチェック。それが3個前であればアウトー
ソースコード
int main() { string n; cin >> n; int p = -100; for( int i = 0; i < n.length(); i++ ){ char c = n[i]; if( c != '1' && c != '4' ){ cout << "NO" << endl; return 0; } if( c == '1' ){ p = i; } if( c == '4' && i - p > 2 ){ cout << "NO" << endl; return 0; } } cout << "YES" << endl; }