具体数学-第8课(取整进阶二)

简介: 今天主要讲了取整与递归式的结合,还有取模的相关知识。

模的性质


定义与性质


模定义如下:

image.png

特别的

image.png

与此类似,定义一个与模类似的运算:

image.png

形象理解如下图所示:

image.png

圆的周长是 y ,一共走过的路长(红色+绿色部分)是 x ,所以 image.png 就是绿色部分, image.png 就是一圈长度减去绿色部分。

模有一些性质:

image.png

应用


考虑如下问题,怎么平均分配 n 个东西给 m 个人?

很容易想到,首先分给每个人 image.png 个东西,剩下 image.png件东西分给前 image.png 个人,一人多一件就行。

概括起来就是,前 image.png 个人,每人 image.png 件,剩下的人,每人 image.png 件。

那有没有办法统一表示呢?有的,每个人分到的件数为

image.png

为什么呢?假设

image.png

那么

image.png

image.png 时,

image.png

image.png 时,

image.png

得证,因此可以得到如下等式:

image.png

image.png

可以进一步将其转换为下取整形式:

image.png

image.png

我们得到了一个令人惊奇的等式:

image.png

HDU3089


最后用今天介绍的约瑟夫环算法来解决一道经典的ACM题!题目链接:杭电3089。

C++代码如下:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
LL Ceil(LL x, LL y) {
    if (x % y == 0) return x / y;
    return x / y + 1;
}
LL J(LL n, LL q) {
    LL D = 1, end = (q - 1) * n;
    while (D <= end) {
        D = Ceil(q * D, q - 1);
    }
    return q * n + 1 - D;
}
int main() {
    LL n, q;
    while (~scanf("%lld%lld", &n, &q)) {
        printf("%lld\n", J(n, q));
    }
    return 0;
}

比网上各种快速算法还要快哦,理论时间复杂度是image.png 的。

相关文章
|
17天前
|
机器学习/深度学习 算法
[第三章]数学与简单dp
[第三章]数学与简单dp
37 1
|
算法 C++
蓝桥杯第五讲--数学【例/习题】
蓝桥杯第五讲--数学【例/习题】
145 0
C#编程-25:数学运算符复习
C#编程-25:数学运算符复习
C#编程-25:数学运算符复习
|
算法
具体数学-第8课(取整进阶一)
今天主要讲了取整与递归式的结合,还有取模的相关知识。
具体数学-第8课(取整进阶一)
具体数学-第9课(取整进阶与数论入门二)
今天讲完了取整的最后一部分知识,并给第四章数论开了个头。 首先还是以一道例题开始我们今天的课程。
123 0
具体数学-第9课(取整进阶与数论入门二)
具体数学-第9课(取整进阶与数论入门一)
今天讲完了取整的最后一部分知识,并给第四章数论开了个头。 首先还是以一道例题开始我们今天的课程。
101 0
具体数学-第9课(取整进阶与数论入门一)
具体数学-第7课(取整基础二)
首先声明一下,最近这段时间忙毕设,没时间更新博客了,大家见谅。 今天这节课开始讲解取整相关知识,主要是数论相关的了。
107 0
具体数学-第7课(取整基础二)
具体数学-第7课(取整基础一)
首先声明一下,最近这段时间忙毕设,没时间更新博客了,大家见谅。 今天这节课开始讲解取整相关知识,主要是数论相关的了。
具体数学-第7课(取整基础一)