bz.4 民意调查

文章介绍了在C++中,当两个int型数据相除时结果可能为double型。作者详细解释了如何通过强制类型转换或乘以1.0来确保结果为double,并演示了一个计算最小公约数的示例,涉及类型转换在程序中的实际应用。
摘要由CSDN通过智能技术生成

两个int型的数据相除结果会默认为int型,但如果其中有一个为double型结果就为double型,
所以:做强制类型转换 或 将其中一个数乘以1.0得到double型。

#include <iostream>
using namespace std;

bool func(int a, int b); //判断a、b是否互质
int main() {
	int a, b, l; //分别表示支持人数、反对人数以及上限
	cin >> a >> b >> l;
	double c = (double)a / b; //即A/B
    //double c = a * 1.0 / b;
	cout << "c=" << c << endl;

	double a1 = a > l ? l : a; //遍历起始值
	double b1 = b > l ? l : b; 
	double min = INT_MAX;

	int aa = a1, bb = b1; //最后的a与b
	
	for (double i = a1;i > 0;i--) { //直接暴力
		for (double j = b1;j > 0;j--) {
			double temp = i / j;
			if (temp >= c) { 
				if (func(i, j)) { //若互质
					if (temp - c < min) { //更新
						min = temp - c;
						aa = i;
						bb = j;
						cout << "更新" << min << endl;
					}
				}
			}
		}
	}

	cout << aa << " " << bb;
	return 0;
}
bool func(int a, int b) {
	for (int i = 2;i <= a;i++) {
		if (a % i == 0) { //是a的约数
			if (b % i == 0) { //若也是b的约数
				return false;
			}
		}
	}
	return true;
}

实际上是:C/C++数据类型转换详解_c++自动类型转换_北冥有鱼丶丶的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值