説明
2つのネックレス、彼らはネックレスかもしれないかどうかを判断するための表現を考えます。
入力
入力ファイル2つだけの行、0-9からなる文字列からなる各ラインは、(ネックレス等しい長さを確保する)ネックレスの表現を記述する。
出力
2つのネックレス均質可能であれば、出力「いいえ」、そうでない場合、最初の行の出力「はい」
ネックレス辞書式に最小の第2行の出力。ネックレスのL =長さはL <= 1000000、提供されます。
サンプル入力
2234342423
2423223434
2423223434
サンプル出力
はい
2234342423
2234342423
ヒント
ソース
/// /// _ooOoo_ /// o8888888o /// 88" 88。」 /// (| -_- |) /// O \ = / O /// ____ / `--- '\ ____ / // 」\\ | | // `。 /// / \\ ||| :||| // \ /// / _ ||||| - : - ||||| - \ /// | | \\\ - /// | | /// | \ _ | '' \ --- / '' | | /// \ .- \ __ `-` ___ / - 。/ /// ___ `。。」/--.-- \ `。。__ /// 。 "" ' < `.___ \ _ <|> _ / ___。' > ' ""。 /// | | 。: ` - \`; `\ _ /`;.`/ - `:| | /// \ \ ` - 。\ _ __ \ / __ _ /。、 `/ / /// ======` `-.____ -.___ \ _____ / ___.-` ____.- "====== /// `= --- =」 /// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ /// 仏祝福、ノーバグ! /// する#include <iostreamの> の#include <cstdioを> する#include < 書式#include <CStringの> の#include <cmath> の#include <cstdlib> 書式#include <キュー> の#include <スタック> の#include <ベクトル> 使用して 名前空間はstd; #define MAXN 100010 の#defineっ長い長い文字列、B; int型 minma(列 X)/// 最小循环同构{ INT LEN = x.size()。 int型 I = 0、J = 1、K = 0。/// 初始化I = 0、J = 1 、一方 (私の<LEN && J <K && LEN <LEN)/// 直接復路走査 { int型 T X = [(IがK + 1)%LEN] - Xの[(J + K)%LEN]; /// 比較X [i]と同形列X [J] 2サイクル IF(Tの== 0)/// スキャンの場合、n個の文字に等しいままであり、わずか1 X文字構成を説明し、任意のx [i]があり、その最小表す K ++を、 他は/// iがKとj + kは+場合発見に等しくない { IF(T> 0)/// X [I + K]> Xの場合 、[J + K] [X次いでI + 1]、X [I + 2]、...、X [I + k]はxの最小値はまた、あなたがこれらの位置スキップし、表現されていないで 、私は+ = K +を1。; 他/// の場合X [I + K]<X [J + K]は、X [J + 1]、X [J + 2]、...、X [j + k]はxの最小値も示されていない場合、これらの位置のスキップ jは+ 1 = K +; IF(J == I)/// 二つのポインタが等しい場合、一つはバックに移動させ、最小サイクル同型見つけやすい J ++を、 K = 0 ; } } 戻り?私はJ Iを< :J; /// 最小サイクル同形の位置返す } int型のmain() { CIN >> A >> Bを、 INTレナa.size =()= LENB b.size(); IF(レナ=!LENB ) のprintf(" ノーN- \ " ); 他 { INT num_a = minma(A)。 INT num_b = minma(B)。 用(int型のk = 0 ; K <レナ; ++ k個) { もし([(num_a + K)%のリナ] = Bの[(num_b + K)%の!レナ]) { のprintf(" なしの\ n " ); リターン 0 ; } } のprintf(" はいの\ n " ); 以下のために(int型私は= 0 ; I <レナ私は++ ) COUTを<< [(iは+ num_a)%のリナ]。 coutの << ' \ nを' ; } 戻り 0 。 }