acm常识入门(给即将进队或者刚刚进队的新生)(仍在更新)

模意义(同余)

同余为数论中的重要概念:
一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余。
记作: a ≡ b ( m o d m ) a≡b(mod m) ab(modm)或者说 a % m = b a\%m = b a%m=b
其中 %就是取模运算符
对模m同余是整数的一个等价关系。

同余有很多奇妙的性质和玩法()
首先我们约定:大写字母如 A ≡ a ( m o d p ) A ≡ a(mod p) Aa(modp)
乘法:

若:AB = C , 则ab %p= c%p
乘法在模意义下同余仍成立;
A = k 1 ∗ p + a ; A = k1 * p +a; A=k1p+a;
B = k 2 ∗ p + b ; B = k2 * p +b; B=k2p+b;
C = k 1 ∗ k 2 ∗ p ∗ p + ( a ∗ k 2 + b ∗ k 1 ) ∗ p + a ∗ b C = k1*k2*p*p +(a*k2+b*k1)*p + a*b C=k1k2pp+(ak2+bk1)p+ab

加减法同理,手推即可发现仍然不影响同余
除法

在除法中要引进一个定理:
费马小定理:结论为: a P − 1 ≡ 1 ( m o d P ) a^{P-1} ≡ 1 (mod P) aP11(modP)
即a的p-1次方对模P意义下与1同余;
那么显然 a P − 2 a^{P-2} aP2就可以看成模意义下的1/a;因为 a ∗ a − 1 = 1 a*a^{-1} = 1 aa1=1;
至此,引入一个方便计算a^b的算法,叫做快速幂,是一个简单实用的 l o g 2 ∗ b log_{2}*{b} log2b 次乘法时间内就能求出来a^b的算法
这是快速幂的解释代码:https://paste.ubuntu.com/p/zJTMWytKFb/

那现在我们要计算b/a在模P意义下等于何数值,显然需要求 b ∗ a P − 2 % P b*a^{P-2}\%P baP2%P
就能把除法成功变成乘法

这里只说明同余意义下的加减乘除。还有开根号等各种运算都能在模意义下找到解释;

累加累乘,表达式的化简

∑ \sum 这是累加符号
∏ \prod 这是累乘符号
[ ] [] []这个在式子中出现表示的含义是方括号内容为真,这[**] = 1,否者为假,可以认为是一个真值判别符号;
∣ | 这个是整除符号,a|b说明b/a的结果是整数;例如:2|8 , 3|9
A n = 2 n + 3 ; A_n = 2n+3; An=2n+3;
那么数列A的前n项和 S n S_n Sn = ∑ i = 1 n i ∗ 2 + 1 \sum_{i=1}^{n}i*2+1 i=1ni2+1
那么n的阶乘 n ! = ∏ i = 1 n i n! = \prod_{i=1}^ni n!=i=1ni

面对一些表达式,我们看起来要枚举两个数各自从1到n,时间复杂度为n方,但是其实式子化简之后就会变得很简单:以下的n都是1e5:

1

∑ i = 1 n ∑ j = 1 n ∑ k = 1 n i ∗ j ∗ k \sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n} i*j*k i=1nj=1nk=1nijk
这个式子乍一看是枚举三个元素,求元素之积,只需要固定ij,思考k的变化:显然是ij+ij2+ij3,这是一个等差数列,于是我们快快乐乐地把式子变成:
∑ i = 1 n ∑ j = 1 n i ∗ j ∗ ( n + 1 ) ∗ n 2 \sum_{i=1}^{n}\sum_{j=1}^{n} i*j*\frac{(n+1)*n}{2} i=1nj=1nij2(n+1)n
一看固定i,j的变化也是等差数列,最后i也是等差数列,上面的式子继续化成:
( ( n + 1 ) ∗ n 2 ) 3 (\frac{(n+1)*n}{2})^3 (2(n+1)n)3

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值