Rumah >pembangunan bahagian belakang >C++ >Sebilangan digit N yang terdiri daripada nombor M yang boleh dibahagi dengan 5 ditulis dalam C++

Sebilangan digit N yang terdiri daripada nombor M yang boleh dibahagi dengan 5 ditulis dalam C++

PHPz
PHPzke hadapan
2023-09-02 16:25:06982semak imbas

Sebilangan digit N yang terdiri daripada nombor M yang boleh dibahagi dengan 5 ditulis dalam C++

Kami diberi nombor N dan susunan digit M. Tugas kita ialah mencari n nombor Nombor boleh dibahagi dengan 5 yang terdiri daripada digit M yang diberi.

Mari lihat beberapa contoh untuk memahami input dan output masalah.

Masuk -

N = 2
M = 3
arr = {5, 6, 3}

Keluar -

2

Terdapat 2 N nombor 35 dan 65 yang mungkin boleh dibahagi sama rata dengan 5. Mari kita lihat contoh lain.

Input -

N = 1
M = 7
arr = {2, 3, 4, 5, 6, 7, 8}

Output -

1

Hanya 1 nombor 1 digit dalam tatasusunan yang diberikan boleh dibahagi dengan 5. Oleh itu, tugas kita ialah mencari bilangan nombor yang boleh dibahagi dengan 5 nombor N yang diberi.

Nombor mesti berakhir dengan nombor 0 atau 5 untuk dibahagi dengan 5. Mari lihat algoritma

Algoritma

  • menyemak 0 dan 5 dalam tatasusunan yang diberikan. 2. Jika terdapat kedua-dua 0 dan 5, terdapat dua cara untuk meletakkan nombor itu ke tempat satu. Jika tidak, akan ada cara untuk meletakkan nombor.
    • Mulakan kiraan hingga 2.
    • Kini, jawatan yang tinggal boleh mempunyai m - 1, m - 2, m - 3, ... n cara untuk mengisinya masing-masing.
    • Tulis gelung yang berulang dari 0 hingga n - 1.
      • Kurangkan susunan.
      • Darabkan dengan kiraan.
  • Jika anda mempunyai nombor tunggal 0 atau 5, hanya ada satu cara untuk meletakkan nombor itu di tempat yang sama.
    • Mulakan kiraan hingga 2.
    • Kini, jawatan yang tinggal boleh mempunyai m - 1, m - 2, m - 3, ... n cara untuk mengisinya masing-masing.
    • Tulis gelung yang berulang dari 0 hingga n - 1.
      • Kurangkan susunan.
      • Darabkan dengan kiraan.
  • Jika tiada nombor 0 atau 5, maka kita boleh membentuk nombor yang boleh dibahagi dengan 5. Pada masa ini -1 dikembalikan.

Pelaksanaan

Berikut ialah pelaksanaan C++ bagi algoritma di atas

#include <bits/stdc++.h>

using namespace std;

int numbers(int n, int m, int arr[]) {
   bool isZeroPresent = false, isFivePresent = false;
   int numbersCount = 0;
   if (m < n) {
      return -1;
   }
   for (int i = 0; i < m; i++) {
      if (arr[i] == 0) {
         isZeroPresent = true;
      }
      if (arr[i] == 5) {
         isFivePresent = true;
      }
   }
   if (isZeroPresent && isFivePresent) {
      numbersCount = 2;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else if (isZeroPresent || isFivePresent) {
      numbersCount = 1;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else {
      return -1;
   }
   return numbersCount;
}
int main() {
   int arr[] = {5, 6, 3};
   cout << numbers(2, 3, arr) << endl;
   return 0;
}

Output

Jika anda menjalankan kod di atas, anda akan mendapat keputusan berikut.

rreeee

Atas ialah kandungan terperinci Sebilangan digit N yang terdiri daripada nombor M yang boleh dibahagi dengan 5 ditulis dalam C++. 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