蓝桥杯 算法训练 最大最小公倍数
问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106。 算法分析 如果 n <= 2, 那么最小公倍数为 n 如果 n 是奇数,那么最小公倍数的最大值为末尾的三个数相乘 如果是偶数的话,如果同时出现两个偶数肯定会不能构成最大值了,因为会被除以2分两种情况: 如果 n 是偶数且不是三的倍数, 比如8,那么跳过n-2这个数而选择 8 7 5 能保证不会最小公倍数被除以2所以最小公倍数的最大值为n * (n – 1) * (n – 3) 如果 n 是偶数且为三的倍数,比如6,如果还像上面那样选择的话,6和3相差3会被约去一个3,又不能构成最大值了。那么最小公倍数的最大值为(n – 1) * (n – 2) * (n – 3) C++算法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include "iostream" #include "algorithm" using namespace std; int main(){ long long n, ans; cin >> n; if(n <= 2){ ans = n; }else if(n%2 == 1){ ans = n * (n-1) * (n-2); }else if(n%3 == 0){ ans = (n-1) * (n-2) * (n-3); }else{ ans = n * (n-1) * (n-3); } cout << ans; return 0; } 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页· 知盈官网
以上内容来自博客订阅源,版权归原作者。关注作者后可以在 关注列表 第一时间查看作者文章。
登录后,加入这场讨论。
登录参与