LearnToCP
Prijavi se
Navigacija
PočetnaRoad-mapaProblemiO Nama
Teorija
Takmičarsko Znanje
Izbor Radnog Okruženja (IDE)Interaktivni ZadaciOutput-only Zadaci
Osnove
Tvoj Prvi ProgramTipovi podataka, Unos i IzlazC++ sintaksaModuloFunkcijeVektoriMatriceVremenska Složenost Algoritma
Sortiranje
SortiranjeSortiranje PrebrojavanjemRadix Sort
Tehnike Optimizacije
Dva PokazivačaZbir brojeva od 1 do nZbir PrefiksaBinarna PretragaPohlepni AlgoritmiFunkcije Binarne PretrageBinarna Pretraga po RešenjuPodeli, pa Vladaj
Binarni Brojevi
Binarni BrojeviBrojevi u koduOperacije nad BitovimaBitmaske
Matematika
Binarno StepenovanjeProsti BrojeviRastavljanje na proste činioceNZD i NZSEratostenovo SitoModifikovano Sito
Strukture Podataka
Niske (Stringovi)StekRedMapeSkupovi (Set)Red sa PrioritetomKorišćenje Proizvoljnih KriterijumaSegmentna StablaFenvikova StablaSparse TabeleDisjunktni SkupoviSqrt Dekompozicija
Kombinatorika
Pravilo SabiranjaPravilo MnoženjaKombinatorni ObjektiPrincip Uključenja Isključenja
Geometrija
Osnove GeometrijeVektoriVektorski i Skalarni ProizvodLinijePoligoniUgloviTačka u PoligonuRastojanja i Tačke PresekaKonveksni OmotačKrugovi
Rekurzija
PokazivačiRekurzijaGenerisanje Kombinatornih Objekata
Dinamičko Programiranje
O DP-uDP problemiDP nad StablimaDP nad Bitmaskama
Teorija Grafova
GrafoviDFS i BFSNajkraći PuteviStablaTopološko SortiranjeDajkstrin AlgoritamMinimalna Razapinjuća StablaAlgoritmi Najkraćih Puteva
Napredna Teorija Grafova
Dvostruka PovezanostJako Povezane KomponenteBipartitni GrafMaksimalni Protok u GrafuFord-Fulkersonov AlgoritamDualnost Protoka i Minimalnog PresekaTeško-Laka DekompozicijaCentroidna Dekompozicija
Napredne Strukture Podataka
2D i 3D Segmentna StablaLenjo PropagiranjeImplicitna Segmentna StablaPerzistentna Segmentna StablaNajbliži Zajednički PredakTrieBalansirana Binarna Stabla PretrageMoov Algoritam

Hanojske kule

EasyProblem #50
VremeMemorijaUlazIzlaz
1 s64 MBstdinstdout

Premestiti najveći disk je lak deo - pitaj se šta mora da se desi pre nego što on uopšte može da se pomeri.

Data su tri štapa, označena brojevima 1, 2 i 3. Na prvom se nalazi n diskova različitih veličina, poređanih po veličini: disk veličine n je na dnu, na njemu je disk veličine n−1, i tako redom sve do diska veličine 1 na samom vrhu. Preostala dva štapa su prazna.

Tvoj zadatak je da ceo toranj premestiš sa štapa 1 na štap 3 uz što manje premeštanja. Postoje dva pravila:

  • jedno premeštanje uzima najgornji disk sa nekog štapa i stavlja ga na vrh drugog štapa;
  • disk se nikada ne sme staviti na manji disk.

Napiši program koji ispisuje premeštanja.

Ulaz

U prvoj liniji ulaza je jedan ceo broj t - broj test primera.
U svakoj od sledećih t linija je po jedan ceo broj n - broj diskova na prvom štapu.

Izlaz

Za svaki test primer ispiši po jednu liniju za svako premeštanje: redni broj štapa sa čijeg se vrha disk uzima i redni broj štapa na čiji se vrh stavlja, razdvojene jednim razmakom. Premeštanja test primera se nižu jedno za drugim, bez ičega između.

Primer

Input
2
3
2
Output
1 3
1 2
3 2
1 3
2 1
2 3
1 3
1 2
1 3
2 3

Prvih sedam linija rešava n=3: najmanji disk ide na štap 3, srednji na štap 2, pa mu se najmanji pridružuje, čime se oslobađa najveći disk da pređe na štap 3 - a dva diska koja čekaju na štapu 2 ga prate u još tri poteza. Poslednje tri linije rešavaju n=2.

Ograničenja

1≤t≤8
1≤n≤16


Zadatak je, uz dozvolu, preuzet iz zadatka Hanojske kule, čiji su autori Društvo matematičara Srbije i Fondacija Petlja.

Pošalji svoje rešenje

Prijavi se da pošalješ rešenje i pratiš svoj napredak.

Prijavi se