Rumah >pembangunan bahagian belakang >C++ >Produk digital serba lengkap

Produk digital serba lengkap

WBOY
WBOYke hadapan
2023-09-19 13:09:10989semak imbas

Produk digital serba lengkap

Diberi dua nombor, tugas kita adalah untuk mengetahui sama ada nombor yang diberikan itu diperolehi dengan mendarab dua nombor lain supaya ketiga-tiga nombor itu Bersama-sama membentuk 9 digit nombor kuali.

Dalam erti kata lain, boleh dikatakan kita perlu mengetahui sama ada nombor yang diberikan apabila digabungkan dengan dua nombor lain membentuk operasi darab untuk mendapatkan nombor penuh nombor asal.

Kami mungkin menghadapi banyak situasi di mana kami akan mendapat pelbagai penyelesaian kepada masalah tersebut dan untuk mendapatkan kerumitan masa terbaik kami hanya akan mencetak penyelesaian pertama yang ditemui dan menghentikan proses berulang.

Penyelesaian: Mula-mula mari kita bincangkan apakah itu nombor digit penuh -

Nombor n-digit dipanggil pannumber jika dan hanya jika ia menggunakan semua digit dari 1 hingga n tepat sekali. Iaitu, nombor itu boleh diwakili sebagai pilih atur semua nombor dari 1 hingga n menggunakan hanya satu digit pada satu masa.

Sebagai contoh, 6745312 ialah nombor kuali 7 digit kerana ia menggunakan semua digit dari 1 hingga 7

Sekarang mari kita gunakan beberapa contoh untuk memahami masalah ini -

Given Number: 7254
Result obtained: Yes, the condition is true

Seperti yang kita sedia maklum, 7254 boleh dinyatakan sebagai hasil darab 39 dan 186.

Menambah 39, 186 dan 7254, kita mendapat 391867254, yang mengandungi semua nombor dari 1 hingga 9. Setiap nombor hanya digunakan sekali sahaja, iaitu nombor penuh yang terdiri daripada 9 digit.

Given Number: 6952
Result obtained: Yes, the condition is true

kaedah

Sekarang, mari kita bincangkan cara untuk menyelesaikan masalah ini−

Kami mula-mula menyemak dengan mencari semua pasangan nombor yang hasil darabnya sama dengan nombor yang diberikan. Kemudian untuk setiap pasangan penyelesaian-nombor yang mungkin, kami akan mencipta rentetan dan menyimpan ketiga-tiga nombor (nombor asal dan dua faktor yang menyebabkan produk menjadi nombor itu).

Sekarang mari cari algoritma yang berfungsi untuk penyelesaian kami.

  • Langkah 1 - Ulang gelung untuk menyemak semua pasangan faktor nombor.

  • Langkah 2 − Untuk setiap bahagian faktor, kami akan mencipta rentetan yang mengandungi nombor asal dan dua faktor.

  • Langkah 3 - Gunakan fungsi sort() untuk mengisih rentetan yang terbentuk.

  • Langkah 4 - Sekarang kita akan mencipta satu lagi rentetan "123456789"

  • Langkah 5 - Membandingkan dua rentetan dan mengembalikan benar jika ia sama.

Contoh

Kod untuk kaedah ini adalah seperti berikut -

#include <bits/stdc++.h>
using namespace std;

// this function checks whether the given string consist of pandigital numbers
bool Is_Pandigital_product (string Original_string) {
   if ( Original_string.length() != 9 ) {
      return false;
   }
   char c[Original_string.length()];
   strcpy(c, Original_string.c_str());
   sort(c, c + Original_string.length());
   string new_string = c;
   if(new_string.compare("123456789") == 0) // comparing both the strings
   {
      return true;
   } else {
      return true;
   }
}
bool PandigitalProduct_1_9(int num)
// This function iterates over a loop till Sqrt(n) and searches for factors of given input.
// for each factor, this loop calls for Is_Pandigital_product function
{
   for (int Iterator = 1; Iterator * Iterator <= num; Iterator++)
      if (num % Iterator == 0 && Is_Pandigital_product(to_string(num) + to_string(Iterator) + to_string(num / Iterator)))
   return true; //Returns true if found pandigital number
   return false;
}
int main() {
   int num = 1234;
   if (PandigitalProduct_1_9(num) == true)
      cout << "yes the number " << num << " is a pandigital product";
   else
      cout << "no the number " << num <<" is not a pandigital product";
    return 0;
}

Output

yes the number 1234 is a pandigital product

Kerumitan Masa - Memandangkan kita menggunakan gelung tunggal yang berulang dari 1 hingga sqrt(n), kerumitan masa penyelesaian ini ialah O(N^1/2) #🎜🎜 #

Kerumitan Ruang - Memandangkan kod tidak memerlukan sebarang memori tambahan, kerumitan ruang adalah linear, iaitu O(1).

Dalam artikel ini, kita melihat apakah jumlah nombor dan cara yang cekap untuk mengetahui sama ada nombor tertentu dan faktornya (pasangan) memberikan 9 apabila digabungkan menjadi rentetan selepas pendaraban Nombor digit penuh.

Atas ialah kandungan terperinci Produk digital serba lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam