Se consideră un automat de criptare format dintr-un tablou cu linii şi coloane, tablou ce conţine toate numerele de la la aşezate ”şerpuit” pe linii, de la prima la ultima linie, pe liniile impare pornind de la stânga către dreapta, iar pe cele pare de la dreapta către stânga (ca în figura alăturată).
Numim ”amestecare“ operaţia de desfăşurare în spirală a valorilor din tablou în ordinea indicată de săgeţi şi de reaşezare a acestora în acelaşi tablou, ”şerpuit” pe linii ca şi în cazul precedent.
De exemplu, desfăşurarea tabloului conduce la şirul: , iar reaşezarea acestuia în tablou conduce la obţinerea unui nou tablou reprezentat în cea de-a doua figură alăturată.
După orice operaţie de amestecare se poate relua procedeul, efectuând o nouă amestecare. S-a observat un fapt interesant: că după un număr de amestecări, unele valori ajung din nou în poziţia iniţială (pe care o aveau în tabloul de pornire). De exemplu, după două amestecări, tabloul de conţine dintre elementele sale în exact aceeaşi poziţie în care se aflau iniţial (vezi elemente marcate din figură).
Cerinţă
Pentru şi citite, scrieţi un program care să determine numărul minim de amestecări ale unui tablou de n linii necesar pentru a ajunge la un tablou cu exact elemente aflate din nou în poziţia iniţială.
Date de intrare
Fişierul de intrare spirala.in
conţine pe prima linie cele două numere şi despărţite printr-un spaţiu.
Date de ieșire
Fişierul de ieşire spirala.out
conţine o singură linie pe care se află numărul de amestecări determinat.
Restricții și precizări
- Datele de intrare sunt alese astfel încât numărul minim de amestecări necesare să nu depăşească
Exemplul 1
spirala.in
4 9
spirala.out
2
Exemplul 2
spirala.in
6 36
spirala.out
330