Số nguyên dương T được gọi là chu kỳ tuần hoàn của xâu S khác xâu rỗng nếu T nhỏ nhất và khi ghép n xâu giống nhau có độ dài T thì được xâu S. Yêu cầu: Cho trước xâu S khác xâu rỗng. Hãy xác định chu kỳ tuần hoàn của xâu S và cho biết xâu S được ghép từ bao nhiêu xâu giống nhau có độ dài T. Dữ liệu vào: Tệp CHUKY.INP gồm 1 dòng ghi xâu S khác xâu rỗng có độ dài không vượt quá 255. Dữ liệu ra: Tệp CHUKY.OUT gồm 1 dòng ghi số nguyên dương T là chu kỳ tuần hoàn của xâu S và số nguyên dương n là số xâu giống nhau có độ dài T ghép nên xâu S, hai số cách nhau đúng 1 kí tự trống. Ví dụ: CHUKY.INP CHUKY.OUT CHUKY.INP CHUKY.OUT abcabcabcabcabc 3 5 abcdef 6 1 GIÚP EM VỚI Ạ T-T
1 câu trả lời
uses crt;
var st:string;
i,l:word;
f1,f2:text;
function check(lt:word):boolean;
var i:word;
s,tmp:string;
begin
s:=copy(st,1,lt);
i:=lt+1;
while (i < l) do
begin
tmp:=copy(st,i,lt);
if s <> tmp then
exit(false);
inc(i,lt);
end;
exit(true);
end;
begin
clrscr;
assign(f1,'CHUKY.INP');reset(f1);
assign(f2,'CHUKY.OUT');rewrite(f2);
readln(f1,st);
l:=length(st);
for i:=1 to l do
if l mod i = 0 then
if check(i) then
begin
write(f2,i,' ',l div i);
close(f1);close(f2);
exit;
end;
end.
Câu hỏi trong lớp
Xem thêm