Pernyataan masalah terdiri daripada mencetak kedudukan n dalam nombor yang terdiri daripada 2, 3, 5 dan 7, di mana n boleh menjadi sebarang nombor positif yang diberikan oleh pengguna.
Nombor yang terdiri daripada 2, 3, 5 dan 7 bermakna ini akan menjadi urutan nombor yang semakin meningkat yang mengandungi hanya nombor 2, 3, 5 atau 7, empat nombor perdana pertama. Beberapa nombor pertama jujukan di mana semua nombor hanya 2,3,5 dan 7 kerana nombornya ialah 2, 3, 5, 7, 22, 23, 25, 27, 32, 33, 35, 37, dsb. .
Pada asasnya, setiap nombor dalam jujukan adalah gabungan 4 nombor ini (iaitu 2, 3, 5 atau 7) dan jujukan itu disusun dalam tertib menaik.
Dalam soalan ini kita akan diberikan nombor N yang digitnya hanya 2, 3, 5 dan 7, kita perlu mengetahui kedudukan nombor yang diberikan dalam urutan dan mencetaknya, ini akan menjadi output angka yang dikehendaki.
Mari kita memahami isu ini dengan lebih baik dengan contoh di bawah.
INPUT : N=33</p><p>OUTPUT : 10
Penjelasan - Nombor yang diberikan mengandungi hanya 2, 3, 5 atau 7 dalam input ialah 33. Dalam urutan nombor dengan hanya digit 2, 3, 5, atau 7, kedudukan 33 ialah kedudukan ke-10. Oleh itu, output kami ialah 10.
INPUT : 52</p><p>OUTPUT : 13
Penjelasan - Nombor dalam input ialah 52. Apabila kita mengikuti corak dalam urutan, setiap nombor mempunyai 2, 3, 5 atau 7 sebagai digitnya, dan urutan itu betul-betul dalam susunan yang semakin meningkat, kita dapati 52 pada kedudukan 13. Jadi output yang kita inginkan ialah 13.
Mari kami memahami algoritma untuk mencari terus kedudukan nombor tertentu tanpa mencipta keseluruhan jujukan.
Jika kita lihat pada urutan nombor di mana nombornya hanya 2, 3, 5 atau 7, kita akan lihat bahawa kita hanya boleh membentuk 4 kombinasi nombor dengan nombor tertentu. Kami akan menggunakan logik ini untuk mengetahui kedudukan mana-mana nombor N yang diberikan.
Empat nombor pertama terletak seperti berikut:
2: Tempat pertama
3: Tempat kedua
5: Tempat ketiga
7: Tempat keempat
Oleh kerana urutan adalah dalam tertib menaik, empat nombor seterusnya akan menjadi 2 digit dengan nombor pertama ialah 2 kerana kita hanya boleh membentuk 4 nombor dengan nombor tertentu.
Kita boleh mencari kedudukan sebarang nombor digit dengan mendarabkan kedudukan digit pertama di sebelah kiri dengan 4 dan menambah kedudukan nombor tertentu itu.
Sebagai contoh, N=52
Kedudukan awal ialah 0.
Bermula dari nombor di sebelah kiri, kedudukan 5 dalam urutan akan menjadi kedudukan kedudukan*4+5, iaitu, 0*4+3=3. Kedudukan sekarang 3.
Nombor seterusnya ialah 2, jadi kedudukan nombor itu ialah 3*4+1, memandangkan kedudukan semasa ialah 3 kali 4, menambah kedudukan nombor semasa memberi kita kedudukan 13, iaitu 52 kedudukan dalam urutan nombor.
Untuk menyelesaikan masalah ini, kami hanya memulakan kedudukan kepada 0. Kemudian teruskan periksa setiap nombor sehingga digit terakhir nombor dan kemas kini kedudukan dengan sewajarnya -
Untuk nombor 2, kedudukannya ialah kedudukan*4+1.
Untuk nombor 3, kedudukannya ialah kedudukan*4+2.
Untuk nombor 5, kedudukannya ialah kedudukan*4+3.
Untuk nombor 7, kedudukannya ialah kedudukan*4+4.
Kami mengemas kini kedudukan dengan mendarab dengan 4 kerana untuk setiap nombor yang mungkin kami hanya boleh membuat 4 kombinasi. Jadi setiap kali kita mendarabkan kedudukan dengan 4 dan menambah kedudukan nombor semasa, kita mendapat kedudukan nombor N, iaitu hanya 2, 3, 5 atau 7.
Kami akan menggunakan algoritma ini dalam pendekatan kami untuk menyelesaikan masalah dengan cekap.
Langkah-langkah yang perlu diikuti apabila melaksanakan algoritma dalam kaedah kami untuk mencetak kedudukan nombor N yang hanya terdiri daripada 2, 3, 5 atau 7 -
Kami akan buat fungsi untuk mendapatkan kedudukan nombor yang diberikan iaitu 2, 3, 5 atau 7 sahaja.
Kita akan mendapat input nombor N dalam bentuk rentetan.
Jadi, daripada i=0 kepada i
Untuk kes pertama, jika nombor ke-i ialah 2, kita akan mendarabkan kedudukan itu dengan 4 dan 1, kerana 1 ialah kedudukan 2. Begitu juga, kita akan menggunakan formula untuk mengira kedudukan nombor sehingga kedudukan i berdasarkan digit ke-i yang dibincangkan dalam bahagian algoritma.
Setiap lelaran, kedudukan sentiasa dikemas kini berdasarkan nombor ke-i semasa.
Apabila kami selesai melayari keseluruhan rentetan, kembalikan nilai yang disimpan di lokasi itu, iaitu output yang kami perlukan.
Kod C++ untuk kaedah ini:
#include <bits/stdc++.h> using namespace std; //to find the position of the number with only 2,3,5 or 7 as its digits int position(string N){ int p=0; //to store the position of the number //iterating in a for loop to calculate the position for(int i=0;i<N.size();i++){ if(N[i]=='2'){ //if the digit is 2 p = p * 4 + 1; //multiplying the position by 4 and adding the position of the digit } else if(N[i]=='3'){ // if the digit is 3 p = p * 4 + 2; } else if(N[i]=='5'){ //if the digit is 5 p = p * 4 + 3; } else{ // for the case when digit is 7 p = p * 4 + 4; } } return p; //return the position of the number N } using namespace std; int main() { string N; N = "2357"; //calling the function cout<<"The position of "<<N<<" in the sequence is : "<<position(N)<<endl; N = "3327"; cout<<"The position of "<<N<<" in the sequence is : "<<position(N)<<endl; return 0; }
The position of 2357 in the sequence is : 112 The position of 3327 in the sequence is : 168
Kerumitan Masa - O(n) , dengan n ialah panjang rentetan atau bilangan digit dalam nombor itu, kerana kita mengulangi n kali dalam gelung for untuk mengira nombor dalam urutan kedudukan yang diberikan
Kerumitan Ruang - O(1) kerana kami tidak menggunakan sebarang ruang tambahan untuk menyelesaikan masalah.
Artikel ini membincangkan algoritma untuk mencari kedudukan nombor N dalam urutan nombor dengan nombor 2, 3, 5 atau 7, kami telah melaksanakan algoritma ini dalam kaedah kami untuk menyelesaikan masalah dengan cekap dalam masa O(n) C++ tanpa menggunakan sebarang ruang tambahan.
Saya harap selepas membaca artikel ini anda akan dapat memahami masalah ini dan cara menyelesaikannya menggunakan C++.
Atas ialah kandungan terperinci Apakah kedudukan n dalam nombor yang terdiri daripada 2, 3, 5, dan 7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!