查找是否有可能在C ++中从给定的成本和数量范围获得比率
概念
对于从lowCost到upCost的给定成本范围以及从lowQuant到upQuant的给定数量范围,确定是否有可能获得给定比率r,其中r=成本/数量,并且lowCost<=成本<=upCost和lowQuant<=数量<=upQuant。
输入项
lowCost = 2, upCost = 10, lowQuant = 3, upQuant = 9 r = 3
输出结果
Yes
说明
此处,成本=r*数量=3*3=9,其中成本在[1,10]中,数量在[2,8]中
输入项
lowCost = 15, upCost = 31, lowQuant = 6, upQuant = 13 r = 8
输出结果
No
说明
在这里,成本=r*数量=8*6=48,其中成本不在[15,31]中,而数量在[6,13]中
方法
对于给定的公式,可以轻松推导出以下公式:
成本=数量*r。其中,r表示为成本与数量之比。
关于上述等式,可以容易地推论逻辑。用r检验每个数量值的乘积,应注意,如果乘积的任何一个值介于lowCost和upCost之间,则答案为是,否则为否。
示例
// C++ program to find if it is //可能得到比率r- #include <bits/stdc++.h> using namespace std; //,则返回true //可能获得比率r- //从给定的成本和 //数量范围。 bool isRatioPossible1(int lowCost1, int upCost1, int lowQuant1, int upQuant1, int r1){ for (int i = lowQuant1; i <= upQuant1; i++){ //用于计算成本对应 //到我的值 int ans1 = i * r1; if (lowCost1 <= ans1 && ans1 <= upCost1) return true; } return false; } //驱动程式码 int main(){ int lowCost1 = 2, upCost1 = 10, lowQuant1 = 3, upQuant1 = 9, r1 = 3; if (isRatioPossible1(lowCost1, upCost1, lowQuant1, upQuant1, r1)) cout << "Yes"; else cout << "No"; return 0; }
输出结果
Yes