当前位置:网站首页>Number theory knowledge
Number theory knowledge
2022-08-09 11:15:00 【Rachel caramel】
1.快速幂
2^10
= 4^5
=4*16^2
= 4 *256
eg.求a^b
int power(int a,int b)
{
int res=1;
while(b)
{
if(b&1) res*=a;
b>>=1;
a=a*a;
}
return res;
}
Casting may be required at some point模板例题
2.
a=4*a;//等价于a<<=2
a*=10;//等价于(a<<3)+(a<<1)
a*=15;//等价于(a<<4)-a
11111(30个1)等价于(1<<31)-1
//a,b交换位置
a^=b^=a^=b;
4.Yang Hui's triangle and permutations

5.质数筛
The most common judgment O(n*n^(1/2))
int prime[maxn];
int cnt=0;
prime[++cnt]=2;
prime[++cnt]=3;
for(int i=4;i<=n;i++)
{
int flag=1;
for(int j=2;j*j<=4;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag) prime[++cnt]=i;
}
garbage sieve(埃拉托斯特尼筛法)
bool isprime[maxn];
int prime[maxn];
int cnt=0;
int getprime(int n)
{
for(int i=1;i<=n;i++) isprime[i]=1;
isprime[1]=0;
for(int i=2;i<=n;i++)
{
if(isprime[i])
{
prime[++cnt]=i;
if((long long)i*i<n)
{
for(int j=i*i;j<=n;j+=i) isprime[j]=0;
}
}
}
rertun cnt;
}
线性筛(欧拉筛)
void getprime()
{
for(int i=2;i<=n;i++)
{
if (!notprime[i]) prime[++tot]=i;
for (int j=1;j<=tot&&i*prime[j]<=n;j++)
{
notprime[i*prime[j]]=1;
if (i%prime[j]==0) break;
}
}
}
理解:
if (i%prime[j]==0) break;
text{这一句是关键,如果i=4的话,当prime[j]=2时,标记8不是素数,Then it jumps out of the loop
If you do not jump out of the loop at this time,12will be screened at this time,但
4 ⋅ 3 = 6 ⋅ 2 = 12 4\cdot 3=6\cdot 2=12 4⋅3=6⋅2=12
实际上12应该被2筛掉,That is, it is screened out by his smallest prime number,因此当i是prime[j]should jump out of the loop directly
6.
^可以看成+(Simple notation
1^1=0 1+1=10=0
1^0=1 1+0=0
0^0=0 0+0=0
7.
例题
gcd (grand common divisor,即最大公约数)
(a,b)即求a和b的最大公约数
(a,b)=(b,b%a)
证明:
a = k 1 ⋅ c b = k 2 ⋅ c a=k_1\cdot c\\ b=k_2\cdot c a=k1⋅cb=k2⋅c
即(a,b)=( k 1 ⋅ c , b = k 2 ⋅ c k_1\cdot c,b=k_2\cdot c k1⋅c,b=k2⋅c)
所以( k 1 , k 2 k_1,k_2 k1,k2)=1
b = k 2 ⋅ c = k 3 ⋅ d a m o d b = ( k 1 , k 2 ) ⋅ c = c b=k_2\cdot c=k_3\cdot d\\ a\bmod b =(k_1,k_2)\cdot c=c b=k2⋅c=k3⋅damodb=(k1,k2)⋅c=c
int gcd(int a,int b)
{
if (!b) return a;
return gcd(b,a%b);
}
int gcd(int a,int b)
{
while (b)
{
int t=b;
b=a%b;
a=t;
}
return a;
}
#include <algorithm>
__gcd(x,y);
9.还需理解
逆元
eg.
3*4=1(mod11)
这里4是3的逆元,相当于1/3
oiwikiThe inverse element explanation of
边栏推荐
猜你喜欢

Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore

MATLAB中如何把cftool拟合的函数输出到命令行(解决如何导出拟合后的曲线数据)

MySQL查询性能优化七种武器之索引潜水

matlab图像分割,从基因芯片荧光图像中提取阴性点(弱)和阳性点(强)

性能测试(03)-JDBC Request

centos7.5 设置Mysql开机自启动

API接口是什么?API接口常见的安全问题与安全措施有哪些?

C语言统计不同单词数

b站up主:空狐公子 --矩阵求导(分母布局)课程笔记

End-to-End Object Detection with Fully Convolutional Network学习笔记
随机推荐
Netscope:神经网络结构在线可视化工具
End-to-End Object Detection with Fully Convolutional Network学习笔记
The torch. The stack () official explanation, explanation and example
CAN总线发送数据
pip common commands and changing source files
GOPROXY 中国代理
focusablejs
Looper 原理浅析
二叉树 前序是根在前(根左右)中序(左根右)
API接口是什么?API接口常见的安全问题与安全措施有哪些?
去除蜂窝状的噪声(matlab实现)
激光条纹中心提取——灰度重心法
C语言统计不同单词数
torch.cat()函数的官方解释,详解以及例子
电磁场与电磁波-场论基础
使用.NET简单实现一个Redis的高性能克隆版(四、五)
全网最简单解决OneNote中英字体不统一
wait系统调用
聚类了解
matlab fcnchk 函数用法