当前位置:网站首页>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
边栏推荐
- cnn的输入输出
- MySQL传统方案和通过SSH连接哪个好?
- PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization论文阅读
- Multi-merchant mall system function disassembly 26 lectures - platform-side distribution settings
- wait系统调用
- faster-rcnn learn
- fork创建多个子进程
- Missing URI template variable ‘employeeNumber‘ for method parameter of type String
- 【精华文】C语言结构体特殊情况分析:结构体指针 / 基本数据类型指针,指向其他结构体
- Oracle数据库体系结构
猜你喜欢
随机推荐
备份mongodb数据库(认证)
备战金三银四:如何成功拿到阿里offer(经历+面试题+如何准备)
Looper 原理浅析
WebSocket
MySQL查询性能优化七种武器之索引潜水
Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore
1007 Maximum Subsequence Sum (25分)
二进制加法
∘(空心的点乘)的数学含义
MATLAB中如何把cftool拟合的函数输出到命令行(解决如何导出拟合后的曲线数据)
信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束
在线编译matlab,亲测好用
图片查看器viewer
聚类了解
基于STM32F103移植FreeRTOS
torch.cat()函数的官方解释,详解以及例子
People | How did I grow quickly from programmer to architect?
1005 Spell It Right (20分)
Julia常见符号意思
STM32使用静态队列保存数据