数字のセグメントをC++で指定された代替数字に置き換えることにより、指定された数を最大化します
与えられたタスクは、0から9までのすべての1桁の数字の代わりに、10桁を含む別の配列を使用してその数字を置き換えることにより、「N」桁の数字で特定の数字を最大化することです。
与えられた条件は、数字の連続したセグメントのみを1回だけ置き換えることができるということです。
入力
N=1234, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4} 出力
1257
説明
番号3は、代替の5 =arr [3]
に置き換えることができます。数字の4は、代わりの7 =arr [4]
に置き換えることができます。入力
N=5183, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4} 出力
7183
以下のプログラムで使用されるアプローチは次のとおりです
-
関数Max()で、int型の変数「N」を作成して数値のサイズを格納します。
-
i =0からi
-
次に、番号を別の番号に置き換えます。
-
選択肢が小さい番号が見つからなくなるまで、次の番号に対してこれを行います
例
#include <bits/stdc++.h>
using namespace std;
string Max(string str, int arr[]){
int N = str.size();
//Iterating till the end of string
for (int i = 0; i < N; i++) {
//Checking if it is greater or not
if (str[i] - '0' < arr[str[i] - '0']) {
int j = i;
//Replacing with the alternate till smaller
while (j < N && (str[j] - '0' <= arr[str[j] - '0'])) {
str[j] = '0' + arr[str[j] - '0'];
j++;
}
return str;
}
}
// Returning original str if there is no change
return str;
}
//Main function
int main(){
string str = "2075";
int arr[] = {3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4 };
cout <<” Maximize the given number by replacing a segment of digits with the alternate digits given is: ” <<Max(str, arr);
return 0;
} 出力
上記のコードを実行すると、次の出力が得られます-
Maximize the given number by replacing a segment of digits with the alternate digits given is: 2375
-
与えられた数がC++でその桁の階乗の合計を除算するかどうかを確認します
整数があるとすると、その数がその桁の階乗の合計を除算するかどうかを調べる必要があります。数値が19で、桁の階乗の合計が(1!+ 9!)=362881であるとすると、これは19で割り切れます。 これを解決するために、数値を取得し、各桁の階乗を計算して合計を加算します。合計が数値自体で割り切れる場合はtrueを返し、そうでない場合はfalseを返します。 例 #include <iostream> using namespace std; int factorial(int n){ if(n == 1 || n == 0) &nb
-
指定された数値の桁を合計するC++プログラム
これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() { int x, s = 0; cout << "Enter the number : "; cin >> x; while (x != 0) { s = s + x % 10; x = x / 10;