蓝桥 ALGO-2 最大最小公倍数

本文分析了如何对于给定的整数n(1<n<10^6),选取三个不小于n的正整数,使它们的最小公倍数达到最大值。通过数论基本知识,文章详细介绍了三种情况下的最优解法,并提供了相应的数学证明。

描述:对于一个整数n(1<=n<=10^6),取三个不小于n的正整数,使其最小公倍数最大。

 

先介绍三条数论的基本知识:

1.任意大于1的两个相邻的正整数是互质的。

2.两个数的公约数只有1和-1,称为互质整数。

3.两个数的公约数只有1,称为互质自然数。

 

分析:最先想到的答案是n*(n-1)*(n-2),(注:n>2),但是我们得考虑是的,n(n-2)差2,是否也互质?

情况一:当n为奇数时,我们考虑它二者是否有公约数2,显然没有,即结果为n*(n-1)*(n-2).

情况二:当n为偶数时,我们可以知道,它两者有公约数2,此时,我们在考虑n*(n-1)*(n-3),

现在,(n-1)(n-3)都是奇数,是互质,那我们就只要考虑n(n-3)是否存在公约数                                       了,即n是否能被3整除;若n不能被3整除,则就是结果了,否则,我们考虑n*(n-1)*(n-4),可以看到,n(n-4)又都是偶数了...那我们再考虑n*(n-1)*(n-5),我们一直都在看n*(..)*(...),忘记了(n-1)*(n-2)*(n-3)了没,我们来计算一下:

n*(n-1)*(n-5)=n^3-6*n^2+5*n     (1)

(n-1)*(n-2)*(n-3)=n^3-6*n^2+11*n-6    (2)

(2)-(1):6*n-6>=0

即,如果(1)式可以的话,那(2)肯定要大于等于(1),所以,在这种情况下,(2)式是答案。

已知蓝桥杯相关题目涉及小明用空白牌凑套牌的情境,有\(n\)张卡牌,每种各一张为一套牌,小明有\(m\)张空白牌可写数当作第\(i\)种牌,且第\(i\)种牌最多手写\(b_i\)张。但仅这些信息未明确最大卡牌价值的具体定义和规则,假设要凑出最多套牌,以下是一种可能的C语言实现思路及代码示例: ```c #include <stdio.h> #define MAX_N 100 // 检查在当前手写牌数量限制下,是否能凑出 target 套牌 int canMakeSets(int n, int m, int b[], int target) { int usedBlanks = 0; for (int i = 0; i < n; i++) { if (target > b[i]) { usedBlanks += target - b[i]; } } return usedBlanks <= m; } // 二分查找最大能凑出的套牌数 int findMaxSets(int n, int m, int b[]) { int left = 0, right = 1000000; // 假设最大套牌数不会超过 1000000 int result = 0; while (left <= right) { int mid = left + (right - left) / 2; if (canMakeSets(n, m, b, mid)) { result = mid; left = mid + 1; } else { right = mid - 1; } } return result; } int main() { int n, m; int b[MAX_N]; // 输入卡牌种类数 n 和空白牌数量 m scanf("%d %d", &n, &m); // 输入每种牌最多手写的数量 for (int i = 0; i < n; i++) { scanf("%d", &b[i]); } // 计算最大能凑出的套牌数 int maxSets = findMaxSets(n, m, b); // 输出结果 printf("最大能凑出的套牌数: %d\n", maxSets); return 0; } ``` 上述代码通过二分查找的方法,不断尝试可能的套牌数量,检查在当前手写牌数量限制和空白牌数量下是否能够凑出该数量的套牌,最终找到最大能凑出的套牌数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值