鱼C论坛

 找回密码
 立即注册
查看: 2511|回复: 6

[已解决]请教一下摩尔计票法

[复制链接]
发表于 2023-2-19 14:15:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我能理解用摩尔计数法找列表里出现次数大于一半的原理,但是这道题的原理我不是很懂。
最佳答案
2023-3-7 13:27:49
循环作用是选出列表中数量最多的两个数:每出现一个不是major1和major2的数时,major1和major2的数量都抵消一个,major1和major2任意一个被抵消完了,就用新来的数替代(诸侯争霸)。

题目

题目

答案

答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-21 23:02:50 | 显示全部楼层
srds,重复发帖(
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-22 21:15:58 | 显示全部楼层

srds是啥意思。。。,主要是没人解答我啊,我以为我的提问被淹没了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-22 21:26:47 | 显示全部楼层
酷酷的枪手 发表于 2023-2-22 21:15
srds是啥意思。。。,主要是没人解答我啊,我以为我的提问被淹没了。。。

srds=虽然但是
重复发帖是被禁止的
没人回=没人会=没人能解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-7 13:27:49 | 显示全部楼层    本楼为最佳答案   
循环作用是选出列表中数量最多的两个数:每出现一个不是major1和major2的数时,major1和major2的数量都抵消一个,major1和major2任意一个被抵消完了,就用新来的数替代(诸侯争霸)。
微信图片_20230307132211.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-14 22:56:53 | 显示全部楼层
这道题目的主要思路是使用递归函数求解两个整数的最大公约数和最小公倍数。

首先,我们需要明确最大公约数和最小公倍数的定义:

最大公约数:指两个或多个整数共有约数中最大的一个。例如,12和18的最大公约数是6,因为12和18都能被6整除,而其他的公约数(如1、2、3、4、…)都小于6。
最小公倍数:指两个或多个整数公有的倍数中最小的一个。例如,4和6的最小公倍数是12,因为4的倍数包括4、8、12、16、20、…,6的倍数包括6、12、18、24、…,它们公共的倍数是12、24、36、…,其中最小的一个是12。
接下来,我们可以使用递归函数来求解最大公约数和最小公倍数。具体来说,我们可以使用欧几里得算法(也称辗转相除法)来求解最大公约数,使用最大公约数求解最小公倍数。

欧几里得算法的基本思想是,假设有两个整数a和b(a>=b),它们的最大公约数为gcd(a,b),那么可以得到以下等式:

gcd(a,b) = gcd(b, a%b)
其中,%表示取余运算。根据这个等式,我们可以使用递归函数来求解最大公约数。具体来说,如果b等于0,那么gcd(a,b)就等于a;否则,gcd(a,b)等于gcd(b, a%b)。

最大公约数求解完毕后,我们可以使用以下公式来求解最小公倍数:

lcm(a,b) = a * b / gcd(a,b)
其中,lcm表示最小公倍数。根据这个公式,我们可以使用递归函数来求解最小公倍数。

在代码实现中,我们需要注意以下几点:

递归函数必须有一个终止条件,否则会导致无限递归。
在计算最大公约数时,需要保证a>=b,否则交换a和b的值。
在计算最小公倍数时,需要注意整数乘法可能会溢出,可以使用long long类型来避免这个问题。
下面是一份可能的代码示例:

#include <iostream>
using namespace std;

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

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

int main() {
    int a, b;
    cin >> a >> b;
    cout << gcd(a, b) << endl;
    cout << lcm(a, b) << endl;
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-15 20:28:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 02:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表