Esimerkiksi tapauksessa $n=5$ listan sisältö on aluksi $[1,2,3,4,5]$ ja muuttuu sitten seuraavasti:
- $[3,4,5,2,1]$
- $[5,2,1,4,3]$
- $[1,4,3,2,5]$
- $[3,2,5,4,1]$
- $[5,4,1,2,3]$
- $[1,2,3,4,5]$
Voit olettaa, että $n$ on välillä $2 \dots 10^9$. Huomaa, että $n$ on suuri, joten ei ole mahdollista luoda niin suurta listaa ja simuloida prosessia, vaan sinun tulee keksiä tehokkaampi algoritmi.
Python
Toteuta tiedostoon
fullround.py
funktio count
, joka antaa askelten määrän.def count(n): # TODO if __name__ == "__main__": print(count(2)) # 2 print(count(5)) # 6 print(count(31)) # 240 print(count(1234567)) # 381038919372Java
Toteuta tiedostoon
FullRound.java
metodi count
, joka antaa askelten määrän.public class FullRound { public long count(int n) { // TODO } public static void main(String[] args) { FullRound f = new FullRound(); System.out.println(f.count(2)); // 2 System.out.println(f.count(5)); // 6 System.out.println(f.count(31)); // 240 System.out.println(f.count(1234567)); // 381038919372 } }