Period HDU - 1358
题意&&思路:
基本和uva那道eg题一模一样。
Period UVA - 1328
AC
#include <iostream>
#include <cstring>
using namespace std
;
const int maxm
=1e6+10;
char p
[maxm
];
int m
, nxt
[maxm
];
void getnxt(){
int i
=0, j
=-1;
nxt
[0]=-1;
while(i
<m
){
if(j
==-1||p
[i
]==p
[j
])nxt
[++i
]=++j
;
else j
=nxt
[j
];
}
}
int main()
{
ios
::sync_with_stdio(0);cin
.tie(0);cout
.tie(0);
int kase
=0;
while(cin
>>m
&&m
){
cin
>>p
;
getnxt();
cout
<<"Test case #"<<++kase
<<endl
;
for(int i
=2; i
<=m
; i
++){
if(nxt
[i
]>0 && i
%(i
-nxt
[i
])==0)cout
<<i
<<' '<<i
/(i
-nxt
[i
])<<endl
;
}
cout
<<endl
;
}
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-38849.html