首頁 >後端開發 >C++ >用C++編寫的由M個數字組成的N位數中能被5整除的數字

用C++編寫的由M個數字組成的N位數中能被5整除的數字

PHPz
PHPz轉載
2023-09-02 16:25:06966瀏覽

用C++編寫的由M個數字組成的N位數中能被5整除的數字

我們給了一個數字 N 以及一個由 M 位數字組成的陣列。我們的工作是找到n個數 由給定的 M 位數字組成的可被 5 整除的數字。

讓我們來看一些範例來理解問題的輸入和輸出。

In -

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

出局 -

2

有 2 N 個數字 35 和 65 可能被 5 整除。讓我們來看另一個例子。

輸入-

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

輸出-

1

給定陣列中只有1 個1 位元數字可以被5 整除。因此,我們的任務是找到給定的 N 個數字可以被 5 整除的數字的數目。

數字必須以數字 0 或 5 結尾才能被 5 整除。讓我們看看演算法

演算法

  • 檢查對於給定陣列中的 0 和 5。 2. 如果同時存在 0 和 5,則有兩種方法將數字放入個位。否則,將有一種放置數字的方法。
    • 將計數初始化為 2。
    • 現在,剩餘的位置可以有 m - 1、m - 2, m - 3, ... n 種分別填滿它們的方法。
    • 寫一個從 0 迭代到 n - 1 的循環。
      • 減少陣列。
      • 將其與計數相乘。
  • 如果有單一數字 0 或 5,則有隻有一種方法可以將數字放入個位。
    • 將計數初始化為 2。
    • 現在,剩餘的位置可以有 m - 1、m - 2 , m - 3, ... n 種分別填充它們的方法。
    • 寫一個從 0 迭代到 n - 1 的循環。
      • 減少陣列。
      • 將其與計數相乘。
  • 如果沒有數字 0 或 5,則我們可以形成一個能被5整除的數字。此時返回-1。

實作

以下是上述演算法的C 實作

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

#輸出

如果執行上面的程式碼,您將得到以下結果。

2

以上是用C++編寫的由M個數字組成的N位數中能被5整除的數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除