Diberikan bilangan bulat positif n > 2
. Kami mengonversinya menjadi array sebagai berikut:
- Jika sama dengan
2
mengembalikan array kosong - Jika tidak, buat array semua
n
faktor utama yang diurutkan naik, lalu setiap elemen ganti dengan indeksnya dalam urutan bilangan prima dan akhirnya konversi setiap elemen menjadi array
Misalnya, mari kita konversi angka 46
menjadi array. Pertama, konversikan ke berbagai faktor utamanya:
[2, 23]
Jumlah 23
ini 9
prime th, jadi ganti 2
dengan array kosong dan 23
dengan [9]
. Array sekarang menjadi:
[[], [9]]
Faktor utama 9
adalah 3
dan 3
, jadi:
[[], [3, 3]]
Lakukan hal yang sama untuk keduanya 3
:
[[], [[2], [2]]]
Dan akhirnya:
[[], [[[]], [[]]]]
Sekarang, untuk menyandikannya, kita cukup mengganti masing-masing braket terbuka dengan 1
dan setiap braket penutup 0
, lalu hapus semua nol akhir dan jatuhkan satu 1
dari ujungnya. Ini adalah nomor biner kami. Menggunakan contoh di atas:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Sekarang cukup masukkan tiga nol terakhir dan terakhir 1
. Angka menjadi 10111001
yang 185
dalam desimal. Itu adalah output yang diharapkan. Perhatikan bahwa dalam kurung konversi array ke biner dari array utama tidak termasuk.
Memasukkan
Bilangan bulat positif n
lebih besar dari 2
.
Keluaran
Integer yang dikodekan n
.
Aturan dan format IO
- Aturan standar berlaku.
- Input dapat berupa string atau angka (tetapi jika string harus dalam basis 10).
- Output dapat berupa string atau angka (tetapi jika string harus dalam basis 10).
- Ini adalah kode-golf , jawaban terpendek dalam byte menang!
Uji kasus
Lebih banyak kasus uji berdasarkan permintaan.
3 ---> 1
4 ---> 2
5 ---> 3
6 ---> 5
7 ---> 6
8 ---> 10
9 ---> 25
10 ---> 11
10000 ---> 179189987
10001 ---> 944359
10002 ---> 183722
10003 ---> 216499
10004 ---> 2863321
10005 ---> 27030299
10006 ---> 93754
10007 ---> 223005
10008 ---> 1402478
2
karena kiriman tidak diperlukan untuk menanganinya.