【大数处理】最小公倍数LCM

本文探讨如何处理大数并计算其最小公倍数(LCM)。以92233720368547758074000000000000000000为例,介绍了大数运算的挑战和解决方案。
摘要由CSDN通过智能技术生成

虽然简单,但是这道题WA了无数次,以前写JAVA时就WA了,现在写C++,旧题重写又WA了。要注意的东西确实比较多,很值得记录一下。两种解法:

解法一:

#include<iostream>;
using namespace std;
int main() {
	int a;
	int b;
	int c = 0;
	cin >> a >> b;
	double res = (double)a * b; //右边要进行转换
	while (a%b != 0) {
		c = a % b;
		a = b;
		b = c;
	}
	cout.precision(0);
	cout << fixed << res / b << endl;//去除科学记数法
	cin >> res;//TEST
}
/*
用double的注意事项
1.大数字从右边转换过来的时候第一个要加double
2.要去除科学记数法 fixed
3.要控制小数的位数对不对
*/

这道题在关于格式的方面有三个非常值得注意的地方:
1. 大数字从赋值号的右边的int类型复制到左边的double类型的时候,在右边要强制进行类型转换,因为如果两个int直接相乘有可能就已经在int中直接溢出了,赋值的数据都是错误的。
2.   接下来就是要注意把科学记数法用std::fixed给去掉,double在遇到大数值数据和很多的小数位时会使用科学记数法。
3.   要用cin.precision(0)控制小数的位数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值