2つの数値による除算がC++の利益に関連付けられている場合、利益を最大化します
5つの整数N、A、B、Xが与えられます およびY 。目標は、[1からN]の範囲の数値の間で、
の場合、それをチェックすることによって利益を最大化することです。-
数値はAで割り切れ、利益は X増加します 。
-
数値はBで割り切れ、利益は Y増加します 。
範囲内の特定の数に対して、利益を1回だけ追加できます。
例を挙げて理解しましょう。
入力 − N =4、A =2、B =3、X =2、Y =3
出力 −最大利益は− 7
説明 −
2,4はA(2)で割り切れます。利益は0から2に増加し、次に2から4に増加します(X =2)
3はB(3)で割り切れます。利益は4から7に増加します(Y =3まで)
入力 − N =5、A =2、B =4、X =1、Y =3
出力 −最大利益は次のとおりです:4
説明 −
2,4はA(2)で割り切れます。
4もB(4)で割り切れます。
2の場合、利益は0から1に増加します(Xによる)。 4については、Bによる除算を選択しました。したがって、Yが多いほど、利益はXではなくYだけ増加します。したがって、1から4に上昇します(Y =3)。
以下のプログラムで使用されているアプローチは次のとおりです
-
整数N、A、B、X、Yがあります。
-
関数maximizeProfit(int n、int a、int b、int x、int y)は利益を計算し、値を返します。すべての変数をパラメーターとして受け取り、最大の利益を返します。
-
変動利益には、最初は0の利益額があります。
-
1からnまで、forループを使用してiのaとbによる除算性を確認します
-
iがaとbの両方で割り切れる場合は、利益をxまたはyのどちらか多い方だけ増やします。
-
それ以外の場合、iがのみで割り切れる場合は、利益をxだけ増やします
-
それ以外の場合、iがbのみで割り切れる場合は、利益をyだけ増やします
-
結果として利益に存在する最終的な戻り値。
例
#include <bits/stdc++.h> using namespace std; // Function to return the maximum profit int maximizeProfit(int n, int a, int b, int x, int y){ int profit=0; for(int i=1;i<=n;i++){ if(i%a==0 && i%b==0){ int maxx=x>=y?x:y; profit+=maxx; } else if(i%a==0){ profit+=x; } else if(i%b==0){ profit+=y; } } return profit; } int main(){ int N = 6, A = 2, B =4, X = 6, Y = 3; cout <<"Maximized profit is: "<<maximizeProfit(N,A,B,X,Y); return 0; }
上記のコードを実行すると、次の出力が生成されます-
Maximized profit is: 2
-
2つ以上(または配列)の数値のGCD0のC++プログラム?
ここでは、3つ以上の数値の公約数を取得する方法を説明します。 2つの数値の公約数を見つけるのは簡単です。 3つ以上の数値のgcdを見つけたい場合は、gcdの結合法則に従う必要があります。たとえば、{w、x、y、z}のgcdを検索する場合は、{gcd(w、x)、y、z}、次に{gcd(gcd(w、x)、y)になります。 、z}、最後に{gcd(gcd(gcd(w、x)、y)、z)}。アレイを使用すると、非常に簡単に実行できます。 アルゴリズム gcd(a、b) begin if a is 0, then return b &n
-
2つの数値を交換するC++プログラム
2つの数値を交換するプログラムを作成する方法は2つあります。 1つは一時変数を使用することを含み、2番目の方法は3番目の変数を使用しません。これらは次のように詳細に説明されています- 一時変数を使用して2つの数値を交換するプログラム 一時変数を使用して2つの数値を交換するプログラムは次のとおりです。 例 #include <iostream > using namespace std; int main() { int a = 10, b = 5, temp; temp = a; a = b; &nbs