JOI 2012-2013 問3 Signboard
int main() { int res = 0; int n; string s, a; cin >> n >> s; for(int i = 0; i < n; i++) { cin >> a; bool f = false; for(int j = 0; (j < a.size()) && !f; j++) //始点を決める if(a[j] == s[0]) // 間隔を決める for(int k = 1; (k < a.size()) && !f; k++) { int current = j + k; for(int l = 1; l < s.size() && current < a.size(); l++) { if(a[current] != s[l]) break; if(l == s.size() - 1) f = true; current += k; } } if(f) res++; } cout << res << endl; }