C++でax+by + cz =nとなるように、x + y+zの値を最大化します。
整数a、b、c、nが与えられます。目標は、ax + by + cz =nとなるようにx、y、zの合計を最大化することです。
上記の式から
cz=n-(ax+by) z= (n- (ax+by))/c
xとyを固定することにより、x、y、zごとに、上記の式を使用してzを計算します。合計を計算し、取得したそのような合計の最大値を保存します。
入力
n = 6, a = 3, b = 4, c = 5;
出力
maximum x+y+z is 2.
説明 − x =2、y =0、z =0の場合ax+by + cz=n。
3 * 2 + 0 * 4 + 0 * 5 =6 =n
入力
n = 4, a = 3, b = 1, c = 2;
出力
maximum x+y+z=4
説明 − x =0の場合、y=4およびz=4 ax + by + cz=n。
0 * 3 + 4 * 1 + 0 * 2 =4 =n
以下のプログラムで使用されているアプローチは次のとおりです
-
整数a、b、c、およびnは、式ax + by + cz=nに使用されます。
-
関数maximize(、int n、int a、int b、int c)は、入力としてa、b、c、およびnを取り、ax + by + cz =nとなるx、y、およびzの可能な最大合計を返します。
> -
可能なすべてのax値を取り、for(i =0; i <=n; i + =a)、また
-
(j =0; j <=n; j + =b)、
の値で可能な限りすべてを取る -
z =(n-(ax + by))/cを計算します。
-
ここで、x =i/aおよびy=j/bです。 x + y + zを計算し、一時的に保存します。
-
これまでにtemp> =maxxの場合は、maxxを更新します。
-
必要な合計としてmaxxを返します。
例
#include <bits/stdc++.h> using namespace std; int maximize(int n, int a, int b, int c){ int maxx = 0; // i for possible values of ax for (int i = 0; i <= n; i += a) // j for possible values of by for (int j = 0; j <= n - i; j += b) { float z = (n - (i + j)) / c; // If z is an integer if (floor(z) == ceil(z)) { int x = i / a; int y = j / b; int temp=x+y+z; if(temp>=maxx) maxx=temp; } } return maxx; } int main(){ int n = 6, a = 3, b = 4, c = 5; cout <<"Maximized the value of x + y + z :"<<maximize(n, a, b, c); return 0; }
出力
Maximized the value of x + y + z :2
-
n!となるようなxの最大値を見つけます。 %(k ^ x)=0(C ++の場合)
2つの整数nとkがあるとします。 n!のようなxの最大値を見つける必要があります。 mod(k ^ x)=0。したがって、n =5、k =2の場合、出力は3になります。Asn! =120、xの値が異なると、次のようになります- 120 mod 2 ^ 0 =0、120 mod 2 ^ 1 =0、120 mod 2 ^ 2 =0、120 mod 2 ^ 3 =0、120 mod 2 ^ 4 =8、120 mod 2 ^ 5 =24、120 mod 2 ^ 6 =56、120 mod 2 ^ 7=120。x=3の最大値として、結果は0であるため、出力は3です。 これを解決するには、次の手順に従
-
配列がC++でバランスが取れるように、追加する最小値を見つけます
n個の要素を持つ配列Aがあるとします。そして、nは偶数です。配列のバランスを取るために必要な値を見つける必要があります。配列のサイズが均一であるため、2つの半分を作成できます。左半分の合計と右半分の合計のバランスをとる必要があります。したがって、配列がA =[1、2、3、2、5、3]の場合、左半分の合計は6で、右半分の合計は10です。したがって、配列のバランスをとるには4が必要です。 タスクは単純です。前半と後半の合計を見つけてから、絶対差を見つけて戻ります。 例 #include<iostream> #include<cmath> using namespace s