KMP写的为啥一直RE啊聚聚们救救孩子orz
查看原帖
KMP写的为啥一直RE啊聚聚们救救孩子orz
322606
GPppC楼主2020/11/21 15:13
#include <iostream>
#include <cstring>
using namespace std;
int nextx[1000010];
int getnext(string p){
	fill(nextx,nextx+1000010,0);
	int i = 0,j = -1;
	nextx[0] = -1;
	while (i < p.size()) {
		if (j == -1 || p[i] == p[j]) {i++;j++;nextx[i] = j;}
		else j = nextx[j];
	}
}

int main(){
	string s;
	while (cin >> s){
		if (s.size() == 1 && s[0] == '.') break;
		getnext(s);
		int n = s.size() - nextx[s.size()];
		if (nextx[s.size()] % (s.size() - nextx[s.size()]) == 0) cout << s.size() / n << endl;
		else cout << "1" << endl;
	}
	return 0;
}
2020/11/21 15:13
加载中...