C++实现不使用除法运算比较两类糖果每千克单价高低
解题思路
要判断两类糖果的单位重量售价高低,本质是比较 s1/m1 和 s2/m2 的大小。由于重量 m1、m2 均为正整数,两边同时乘以 m1*m2 不会改变不等号方向,因此可以把除法比较等价转换为乘法比较:
比较
s1 * m2和s2 * m1的大小即可得到结果,全程不需要使用除法或取模运算。
实现逻辑
- 输入四个整数:第一类糖果重量
m1、售价s1,第二类糖果重量m2、售价s2 - 计算两个交叉乘积:
left = s1 * m2,right = s2 * m1 - 分支判断结果:
- 若
left > right:第一类糖果每千克售价更高 - 若
left < right:第二类糖果每千克售价更高 - 若
left == right:两类糖果每千克售价相同
- 若
示例验证
题目给出的示例参数:m1=2、s1=17、m2=3、s2=14
- 计算得
left = 17*3 = 51,right =14*2=28 - 51>28,因此第一类糖果更贵,和预期结果一致
C++实现代码
#include <iostream> using namespace std; int main() { int m1, s1, m2, s2; cin >> m1 >> s1 >> m2 >> s2; int left = s1 * m2; int right = s2 * m1; if (left > right) { cout << "第一类糖果更贵" << endl; } else if (left < right) { cout << "第二类糖果更贵" << endl; } else { cout << "两类糖果单位售价相同" << endl; } return 0; }
内容的提问来源于stack exchange,提问作者Sigmar
相关产品推荐
相关产品推荐

