UVa455定期的な文字列(文字列サイクル)

説明
文字列が長さkの文字列が何回も繰り返されることができるならば、サイクルがkであることを文字列と呼ばれます。例えば、サイクル3では、文字列「abcabcabcabc」(もちろん、彼はまた6,12サイクル、など)。

今、あなたは、もはや80の文字列よりも最小期間を求めているように、プログラムを書きます。入力最初の入力整数n、データのn組の代表。

行毎のデータの各セットは、弦80の長さ以下です。
隣接する二つの入力の間に空白行があります。出力された出力データ列内の各整数k、文字列の最小の期間を表します。
隣接する二つの出力の間に空白行があるはずです。
サンプル入力
2 

ABCABCABC 

HoHoHo
サンプル出力
3 

2 


解答:
の#include <iostreamの>
する#include <CStringの>
する#include <cstdioを>
使用して名前空間std。
チャーS [100]。
INTのL、N。
INT解く()
{
    ブールB = 1。
    memsetの(S、0、はsizeof(S))。
    scanf関数( "%sの"、&S)。
    L = 0。
       一方、(S [L] = 0!)Lを++。
       以下のために(INT i = 1; iは= Lを<; iは++)//长度
       {
           IF(1%I == 0)
            {
                B = 1。
                (INT J = 0; J <L; J + = i)に対する
                {
                    int型K。
                    用(K = 0; K <iは、++ K)
                    {
                        IF(!S [J + K] = sの[K])
                        {
                            B = 0。
                            ブレーク;
                        }
                        
                    }
                    もし、(B == 0)ブレーク。
                }
                IF(B == 1)リターンI。
            }
               
    }
    0を返します。
}
int型のmain()
{
   scanf関数( "%のD"、&N);
   (N--)一方
   {
           INT ANS。
        ANS =(解きます)。
           もし(!N = 0)のprintf( "%d個の\ nは\ n"は、ANS)。
           他のprintf( "%d個の\ n"は、ANS)。
   }
}

おすすめ

転載: www.cnblogs.com/satans/p/11109052.html