![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 93
Ryan_Right
An Architect's dream is an Engineer's nightmare.
展开
-
位运算简介
二进制操作简介1. 基本运算1. 按位或(|)2. 按位异或(^)1. 基本运算1. 按位或(|)与运算位于 C++ 运算符的第十二级,是这篇文章里讲述的运算符比较级最低的。该运算把数字转成了二进制,按照每一位操作,规则如下:两个都是0,结果为0;两个都是1,结果为1;一个是1,一个是0,结果为1;例如:15|13转成二进制,分别是11111和11101。 11111|11101------ 11111∴15|13=11111(2)=152. 按位异或(^)按位异或位于原创 2021-09-10 21:18:35 · 543 阅读 · 0 评论 -
大素数判定
这年头,凡是能用编程语言写出来的大素数判定算法都是概率性的,不能保证全部都对,但能够做到大部分正确。提前声明一下,由于这里判定的是大素数,基本都要用到高精度(此处省略,用 int 代替 (python nb!) ,且次方皆用 pow 直接代替 因为我很懒 )。所有的素性检验的第一步是排除比2大的偶数。~~~此处的大素数定义为大于 10910^9109 的素数,均无法使用 O(n)O(\sqrt n)O(n) 的算法实现。费马素性检验众所周知,费马小定理如果 ppp 是一个素数,且整数 aaa原创 2021-08-20 10:16:02 · 2518 阅读 · 0 评论 -
大组合数问题
组合数的公式:Cnr=n∗(n−1)∗...∗(n−r+1)r!=n!r!(n−r)!C^r_n=\frac{n*(n-1)* ... *(n-r+1)}{r!}=\frac{n!}{r!(n-r)!}Cnr=r!n∗(n−1)∗...∗(n−r+1)=r!(n−r)!n!观察上述式子,读者应该发现了,我们主要还是采用第一个算式,因为乘法操作相对较少,速度比较快,也相对来说不容易溢出。思路一暴力做乘法,并且使用组合数本身的性质进行优化,使用long long,保证在乘法过程中可以连乘更多的数。另外转载 2021-08-09 21:16:12 · 388 阅读 · 0 评论