明明没有超过int范围,为什么用int不过
查看原帖
明明没有超过int范围,为什么用int不过
842073
dagui楼主2024/5/5 17:10

这份代码为什么开long long的话第13到17个测试点可以过,但不开long long的话,第13到17个测试点过不了,这是为什么呀?按理来说,第13到第17个测试点,就算a * b * c都不会超过int的数据范围呀

#include<bits/stdc++.h>
// #define int long long
using namespace std;


// 求最大公约数
int gcd(int a, int b){
	int mx = max(a, b);
	int mn = min(a, b);
	if(mx % mn == 0) return mn;
	return gcd(mn, mx % mn);
} 

// 求最小公倍数 
int lcm(int a, int b){
	return a*b / gcd(a, b);
} 

signed main(){
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int a, b, c, ans;
	cin>>a>>b>>c;
	int tmp1 = lcm(a, b), tmp2 = lcm(b, c);
	// cout<<tmp1<< " "<< tmp2<<"\n";
	ans = lcm(tmp1, tmp2);
	cout<<ans;
	return 0;
	
}
2024/5/5 17:10
加载中...