C++のM桁から形成される5で割り切れるN桁の数値
M桁の配列とともに数値Nを指定しました。私たちの仕事は、5で割り切れる与えられたM桁から形成されたn桁の数を見つけることです。
問題の入力と出力を理解するために、いくつかの例を見てみましょう。
で-
N = 2 M = 3 arr = {5, 6, 3}
アウト-
2
5で割り切れる2つのN桁の数字35と65があります。別の例を見てみましょう。
入力-
N = 1 M = 7 arr = {2, 3, 4, 5, 6, 7, 8}
出力-
1
与えられた配列には、5で割り切れる1桁の数が1つしかないので、私たちのタスクは、5で割り切れるN桁の与えられた数から形成できる数を見つけることです。
5で割り切れるには、数字の0または5で終わる必要があります。アルゴリズムを見てみましょう
アルゴリズム
- 指定された配列の0と5を確認します。 2. 0と5の両方がある場合、単位の場所に数字を配置する方法は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; }
出力
上記のコードを実行すると、次の結果が得られます。
2
-
C++での桁の合計に従って数値を並べ替えます
このセクションでは、数字の合計に従って数値を並べ替える方法を説明します。したがって、数字の桁数が少ない場合は、最初に配置され、次に数字の合計が大きい数字が配置されます。 data = {14, 129, 501, 23, 0, 145} 並べ替えると、-になります。 data = {0, 14, 23, 501, 145, 129} ここでは、それらを並べ替えるための独自の比較ロジックを作成します。その比較ロジックは、C++STLの並べ替え関数で使用されます。 アルゴリズム compare(num1, num2): Begin if sum of digits o
-
Xで割り切れる最大のK桁の数値のC++プログラム?
2つの整数XとKが与えられます。 Kは整数の桁数です。論理は、Xで割り切れる最大のK桁の数字を見つけることです。 Input: X = 30, K = 3 Output: 980 説明 980は、30で割り切れる最大の3桁の数値です。Kを10の累乗として、1を引くと、最大のK桁の数値が得られます。その後、最大の数値を取得しようとします。これはXで除算されます。 例 #include <iostream> #include <math.h> using namespace std; int main() { int X = 20;