Heim >Backend-Entwicklung >C++ >Eine in C++ geschriebene Anzahl von N Ziffern, die aus M Zahlen besteht und durch 5 teilbar ist

Eine in C++ geschriebene Anzahl von N Ziffern, die aus M Zahlen besteht und durch 5 teilbar ist

PHPz
PHPznach vorne
2023-09-02 16:25:06982Durchsuche

Eine in C++ geschriebene Anzahl von N Ziffern, die aus M Zahlen besteht und durch 5 teilbar ist

Wir erhalten eine Zahl N und eine Reihe von M Ziffern. Unsere Aufgabe ist es, n Zahlen zu finden Eine durch 5 teilbare Zahl, die aus den angegebenen M Ziffern besteht.

Sehen wir uns einige Beispiele an, um den Input und Output des Problems zu verstehen.

In -

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

Out -

2

Es gibt 2 N-Zahlen 35 und 65, die gleichmäßig durch 5 teilbar sein können. Schauen wir uns ein anderes Beispiel an.

Eingabe -

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

Ausgabe -

1

Nur 1 einstellige Zahl im angegebenen Array ist durch 5 teilbar. Daher besteht unsere Aufgabe darin, die Anzahl der Zahlen zu ermitteln, die bei gegebenen N Zahlen durch 5 teilbar sind.

Zahlen müssen mit der Ziffer 0 oder 5 enden, um durch 5 teilbar zu sein. Sehen wir uns den Algorithmus

Algorithmus

  • an, der im angegebenen Array nach 0 und 5 sucht. 2. Wenn sowohl 0 als auch 5 vorhanden sind, gibt es zwei Möglichkeiten, die Zahl an der Einsenstelle einzufügen. Ansonsten gäbe es eine Möglichkeit, die Zahlen zu platzieren.
    • Zählung initialisieren bis 2.
    • Jetzt können die verbleibenden Positionen m - 1, m - 2, m - 3, ... n Möglichkeiten haben, sie jeweils zu besetzen.
    • Schreiben Sie eine Schleife, die von 0 bis n - 1 iteriert.
      • Reduzieren Sie das Array.
      • Multiplizieren Sie es mit der Anzahl.
  • Wenn Sie eine einzelne Zahl haben, 0 oder 5, gibt es nur eine Möglichkeit, die Zahl an die Einerstelle zu setzen.
    • Zählung initialisieren bis 2.
    • Jetzt können die verbleibenden Positionen m - 1, m - 2, m - 3, ... n Möglichkeiten haben, sie jeweils zu besetzen.
    • Schreiben Sie eine Schleife, die von 0 bis n - 1 iteriert.
      • Reduzieren Sie das Array.
      • Multiplizieren Sie es mit der Anzahl.
  • Wenn es keine Zahl 0 oder 5 gibt, dann können wir eine Zahl bilden, die durch 5 teilbar ist. Gibt zu diesem Zeitpunkt -1 zurück.

Implementierung

Das Folgende ist die C++-Implementierung des obigen Algorithmus

#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;
}

Ausgabe

Wenn Sie den obigen Code ausführen, erhalten Sie die folgenden Ergebnisse.

2

Das obige ist der detaillierte Inhalt vonEine in C++ geschriebene Anzahl von N Ziffern, die aus M Zahlen besteht und durch 5 teilbar ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen