问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
tips:关于N类型问题,虽然1 <= n <= 10^6但是仍要设置为ll
例如 (本人理解是 电脑会自己优先计算n * n的值 然后n * n会溢出int范围,故也需要把n设为long long int范围),我就栽在这里了 0,0
(至于 分析过程,大家借鉴一下其他人的博客吧 嘻嘻 本人比较懒)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll ans1 = 0;
int n = 1000000;
ans1 = n*n;
cout<<ans1<<endl;
cout<<"ans1会超出范围"<<endl;
ll ans2 = 0;
ll n = 1000000;//也要定义成long long int
ans2 = n*n;
cout<<ans2;
cout<<"ans2不会超出范围"<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll ans = 0;
ll n;//虽然1 <= n <= 10^6但是仍要设置为ll
cin>>n;
if(n <3 ) {//如果n小于3,则选三个数一定会出现重复的数,他们的最大最小公倍数就是n本身(自己可以试试看)
cout<<n;
return 0;
}
if(n % 2 != 0)
ans = n*(n-1)*(n-2);
else if(n % 3 != 0)
ans = n*(n-1)*(n-3);
else ans = (n - 3)*(n-1)*(n-2);
cout<<ans;
return 0;
}
版权声明:本文为intmain_S原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。