Diberikan susunan saiz N. Tatasusunan pada mulanya adalah semua sifar. Tugasnya ialah mengira. Nombor 1 dalam tatasusunan selepas N bergerak. Setiap langkah N mempunyai peraturan yang berkaitan. Peraturannya ialah -
Pergerakan pertama - tukar elemen
Langkah kedua - tukar kedudukan 2, 4, 6, 8……… …..
Langkah ketiga - tukar elemen pada kedudukan 3 dan 6, 9, 12………..
Kira bilangan 1 dalam tatasusunan terakhir.
Kita faham melalui contoh. .
Arr[]={ 0,0,0,0 } N=4
Penjelasan - Susunan selepas pergerakan seterusnya -
Number of 1s in the array after N moves − 2
Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut
Kami menggunakan tatasusunan integer Arr[] yang dimulakan dengan 0 dan integer N.
Fungsi Onecount mengambil Arr[] dan saiz Nnya sebagai input dan mengembalikan no. Nombor dalam tatasusunan terakhir selepas N bergerak.
Gelung for bermula dari 1 dan pergi ke penghujung tatasusunan.
Setiap i mewakili langkah ke-i.
Untuk setiap langkah ke-i, jika indeks j ialah gandaan i (j%i==0), gantikan 0 pada kedudukan itu dengan 1.
< /li>Teruskan proses ini untuk setiap i sehingga akhir tatasusunan.
Contoh
Move 1: { 1,1,1,1 } Move 2: { 1,0,1,0 } Move 3: { 1,0,0,3 } Move 4: { 1,0,0,1 } Number of ones in the final array is 2.
Output
Arr[]={ 0,0,0,0,0,0} N=6
Atas ialah kandungan terperinci Dalam bahasa C, kira bilangan 1 dalam tatasusunan selepas N bergerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!