Rumah > Artikel > pembangunan bahagian belakang > Dalam C++, susun semula nombor yang juga boleh disusun semula olehnya
Kami diberi beberapa jenis integer, dengan mengandaikan ia adalah nombor. Tugasnya adalah untuk menyusun semula digit nombor supaya nombor yang disusun semula juga boleh dibahagikan dengan nombor yang diberikan.
Input - int number = 100035
Output - Nombor yang boleh dibahagikan dengan nombor selepas penyusunan semula adalah: 300105
planation - Kami memberikan a Nombor integer, iaitu 100035. Sekarang, tugasnya adalah untuk menyusun semula nombor yang diberikan ini supaya nombor yang terbentuk boleh dibahagikan dengan nombor 100035. Jadi selepas menyusun semula nombor kita mendapat 300105 yang boleh dibahagikan dengan nombor 100035. . Sekarang, tugasnya adalah untuk menyusun semula nombor yang diberikan ini supaya nombor yang terbentuk boleh dibahagikan dengan 1000035. Jadi selepas menyusun semula nombor kita mendapat 3000105 yang boleh dibahagikan dengan nombor 1000035.
Input - nombor int = 28
Output - Nombor yang disusun semula juga boleh dibahagikan dengannya: -1
Penjelasan - Kami diberi nombor integer "nombor". Sekarang, tugasnya adalah untuk menyusun semula nombor yang diberikan ini supaya nombor yang terbentuk boleh dibahagikan dengan 28. Jadi selepas menyusun semula nombor kita mendapat 82 yang tidak boleh dibahagikan dengan nombor 28 jadi outputnya ialah -1.
Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut
Masukkan pembolehubah jenis integer, dengan mengandaikan ia adalah nombor, dan hantar data ke fungsi Susunan Semula(nombor).
Dalam fungsi Penyusunan Semula(nombor)
Panggil fungsi total_count(nombor, vec) dan hantar nombor dan vec sebagai parameter kepada fungsi.
Mulakan dengan gelung dari i hingga 2 sehingga i kurang daripada 10. Di dalam gelung, tetapkan suhu kepada nombor * i.
Buat pembolehubah vektor yang menyimpan pembolehubah jenis integer, dengan mengandaikan ia ialah vec_2(10, 0).
Panggil fungsi total_count(nombor, vec_2) dan hantar nombor dan vec_2 sebagai parameter kepada fungsi.
Semak sama ada sama(vec.begin(), vec.end(), vec_2.begin()), kemudian kembalikan temp. Jika tidak, -1 dikembalikan.
#include<bits/stdc++.h> using namespace std; void total_count(int number, vector<int> &vec_3){ while(number){ vec_3[number % 10]++; number = number / 10; } } int Rearrangement(int number){ vector<int> vec(10, 0); total_count(number, vec); for(int i = 2; i < 10; i++){ int temp = number * i; vector<int> vec_2(10, 0); total_count(temp, vec_2); if(equal(vec.begin(), vec.end(), vec_2.begin())){ return temp; } } return -1; } int main(){ int number = 100035; cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number); return 0; }
Output
Rearrangement of a number which is also divisible by it is: 300105
Atas ialah kandungan terperinci Dalam C++, susun semula nombor yang juga boleh disusun semula olehnya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!