Rumah > pembangunan bahagian belakang > C++ > Apakah kedudukan n dalam nombor yang terdiri daripada 2, 3, 5, dan 7?

Apakah kedudukan n dalam nombor yang terdiri daripada 2, 3, 5, dan 7?

WBOY
Lepaskan: 2023-08-27 13:53:10
ke hadapan
1379 orang telah melayarinya

2, 3, 5, 7组成的数字中,n的位置是多少?

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
Salin selepas log masuk

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
Salin selepas log masuk

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.

Algoritma

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.

Kaedah

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.

Contoh

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;
}
Salin selepas log masuk

Output

The position of 2357 in the sequence is : 112
The position of 3327 in the sequence is : 168
Salin selepas log masuk

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.

Kesimpulan

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan