Rumah >pembangunan bahagian belakang >C++ >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
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.
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; }
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!