我们给出了5个整数N,A,B,X和ÿ。目标是通过检查[1到N]范围内的数字之间是否存在来最大化利润。
一个数字是由A整除,则通过利润增长X。
一个数字是由乙整除然后通过利润增长ÿ。
对于范围内的特定数字,只能添加一次利润。
让我们通过示例来理解。
输入-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的增加,利润增加Y而不是X。因此它从1上升到4(按Y = 3)。
我们有整数N,A,B,X,Y。
函数maximumProfit(int n,int a,int b,int x,int y)计算利润并返回值。它以所有变量为参数并返回最大利润。
可变利润将有一定数量的利润,最初为0。
从1到n,使用for循环检查i被a和b的除数
如果i被a和b整除,则将利润增加x或y中的较大者。
否则,如果我只能被我整除,则将利润增加x
否则,如果我只能被b整除,则将y的利润增加
最后,返回值以利润形式出现。
#include <bits/stdc++.h> using namespace std; //函数返回最大利润 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