<div> <p>فك تشفير الإزاحة الدورية لسلسلة نصية بنمط متكرر</p> </div>
Kotlin
Hard
strings
مهمة «<div> <p>فك تشفير الإزاحة الدورية لسلسلة نصية بنمط متكرر</p> </div>»
<div>تم إعطاء سلسلة مشفرة، تم الحصول عليها من السلسلة الأصلية عن طريق إزاحة دائرية لليسار بمقدار عدد K (0 ≤ K < طول السلسلة) ثم استبدال كل حرف برمز ASCII الخاص به، مكتوبًا بنظام العد العشري. السلسلة الأصلية تتكون فقط من أحرف لاتينية صغيرة (a-z) ويبلغ طولها 1000 حرف كحد أقصى. من المعروف أن السلسلة الأصلية هي نتيجة تكرار متعدد لنمط (pattern) طوله P (1 ≤ P ≤ طول السلسلة) — أي أن السلسلة تأخذ الشكل S = T + T + ... + T (عدد صحيح من المرات). يجب إيجاد طول النمط الأدنى الممكن P واستعادة السلسلة الأصلية قبل الإزاحة الدائرية. إذا وُجدت عدة سلاسل أصلية محتملة، يتم اختيار السلسلة الأصغر معجميًا (في حالتها الأصلية غير المُزاحة).</div>
<div>بيانات الإدخال: سطر واحد يحتوي على سلسلة من الأعداد الصحيحة مفصولة بمسافات — وهي السلسلة المشفرة. طول السلسلة هو L (1 ≤ L ≤ 2000).</div>
<div>بيانات الإخراج: رقمان — طول النمط الأدنى P وقيمة الإزاحة K، ثم في السطر التالي — السلسلة الأصلية المستعادة (قبل الإزاحة). إذا تعذرت الاستعادة، يتم إخراج -1.</div>
<div>بيانات الإدخال: سطر واحد يحتوي على سلسلة من الأعداد الصحيحة مفصولة بمسافات — وهي السلسلة المشفرة. طول السلسلة هو L (1 ≤ L ≤ 2000).</div>
<div>بيانات الإخراج: رقمان — طول النمط الأدنى P وقيمة الإزاحة K، ثم في السطر التالي — السلسلة الأصلية المستعادة (قبل الإزاحة). إذا تعذرت الاستعادة، يتم إخراج -1.</div>
تنسيق الإدخال
سطر واحد يحتوي على أعداد صحيحة مفصولة بمسافات — رموز الأحرف للسلسلة المشفرة.
تنسيق الإخراج
في السطر الأول عددان صحيحان: P و K. في السطر الثاني — السلسلة النصية الأصلية قبل الإزاحة. إذا لم يتم العثور على حل، اطبع -1.
أمثلة
مثال 1
الإدخال
99 97 98 99 97 98
الإخراج
3 1
abcabc
مثال 2
الإدخال
97 98 97 98
الإخراج
2 0
abab
main.kt