Ханой
Submit solution
Points:
3
Time limit:
0.1s
Memory limit:
16M
Author:
Problem type
Allowed languages
C++
Tower of Hanoi бодлогын дагуу: n ширхэг, хэмжээгээрээ ялгаатай диск болон 3 гадас өгөгдөнө. Эхэндээ бүх диск нь нэгдүгээр гадас дээр, томоосоо доош дараалсан байршилтай байна.
Дискүүдийг нэгдүгээр гадаснаас гуравдугаар гадас руу зөөх шаардлагатай.
Зөөхдөө дараах дүрмийг баримтална:
- Нэг үйлдлээр зөвхөн нэг диск зөөж болно.
- Ямар ч үед жижиг диск дээр том диск тавьж болохгүй.
Бүх дискийг гуравдугаар гадас руу зөөхөд шаардлагатай хамгийн бага үйлдлийн тоо-г \(10^9+7\) тоонд хуваахад гарах үлдэгдлийг олно.
Оролт:
n бүхэл тоо өгөгдөнө.
Гаралт:
Нийт хамгийн бага үйлдлийн тоог \(10^9+7\) тоонд хуваасан үлдэгдлийг хэвлэнэ.
Хязгаарлалтууд:
- \(1 \leq n \leq 10^{18}\)
Дэд бодлого
| № | Дэд бодлого | оноо | Хязгарлалт | Тайлбар |
|---|---|---|---|---|
| 1 | Дэд бодлого -1 | 1 | \(n \leq 20\) | |
| 2 | Дэд бодлого -2 | 1 | \(n \leq 60\) | |
| 3 | Дэд бодлого -3 | 1 | \(n \leq 120\) | |
| 4 | Дэд бодлого -4 | 1 | \(n \leq 10^5\) | |
| 5 | Дэд бодлого -5 | 1 | Нэмэлт хязгаарлалтгүй |
Жишээ:
Оролт-1
3
Гаралт-1
7
Comments