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