ホームページ  >  記事  >  バックエンド開発  >  C++ で記述された 5 で割り切れる M 個の数値で構成される N 桁の数値

C++ で記述された 5 で割り切れる M 個の数値で構成される N 桁の数値

PHPz
PHPz転載
2023-09-02 16:25:06939ブラウズ

C++ で記述された 5 で割り切れる M 個の数値で構成される N 桁の数値

数値 N と M 桁の配列が与えられます。私たちの仕事はn個の数字を見つけることです 指定された M 桁から構成される 5 で割り切れる数値。

問題の入力と出力を理解するために、いくつかの例を見てみましょう。

In -

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

Out -

2

次で均等に割り切れる 2 つの N 数値 35 と 65 があります。 5.別の例を見てみましょう。

入力-

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

出力-

1

指定された配列内の 5 で割り切れる 1 桁の数値は 1 つだけです。したがって、私たちのタスクは、与えられた N 個の数値から 5 で割り切れる数値の数を見つけることです。

数値は、5 で割り切れる数字 0 または 5 で終わる必要があります。アルゴリズムを見てみましょう

アルゴリズム

  • 指定された配列内の 0 と 5 をチェックします。 2. 0 と 5 の両方がある場合、1 の位に数字を入れる方法は 2 つあります。それ以外の場合は、数字を配置する方法があります。
    • カウントを 2 に初期化します。
    • ここで、残りの位置には、それぞれ m - 1、m - 2、m - 3、... n 通りの方法で埋めることができます。
    • 0 から n - 1 まで繰り返すループを作成します。
      • 配列を削減します。
      • それにカウントを掛けます。
  • 一桁の 0 または 5 がある場合、その数字を 1 の位に入れる方法は 1 つだけです。
    • カウントを 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;
}

出力

上記のコードを実行すると、次の結果が得られます。以下の結果。

えええええ

以上がC++ で記述された 5 で割り切れる M 個の数値で構成される N 桁の数値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。