讲了非常虚伪的数(shou)论
=_=1进制转换
进制转换是在基础篇内的最后一章,虽然学的有点仓促,但是听起来还是听得懂的,权当复习加巩固了一次。
=_=2数字分离
感觉很水…
=_=3回文数
…
=_=4整除
9条性质
1若d|a,则对于任意整数k有d|ka
2若a|b且b|a,则有a=b ……对称性
3若c|b,b|a,则c|a ……传递性
4若c|a,d|b,则cd|ab
5若c|a,c|b,则c|(ma+nb)
6若n∈N*,则(a-b)|(an-bn)。
7若n为奇数,则(a+b)|(an+bn);
8若n为偶数,则(a+b)|(an-bn)
9任意n个连续正整数的乘积必能被n!整除
=_=5分解整数
…
=_=6快速幂
快速幂是非常好用的,它的时间复杂度是O(log 2 n)的。
a^b:
for (int i=1;i<=b;i++)
ans*=a;
效率比较低。
而快速幂则是先将b转换为二进制,则该二进制数的第i位的权值为2^i-1。
so,
开飞机代码:
int fast_pow(int xx,int yy)
{
intr=1,base=a;
while(yy)
{
if (yy&1)
r*=base;
base*=base;
yy>>=1;
}
returnr;
}
正常的代码:
int b,p,k,len;
int work()
{
cin>>b>>p>>k;
b%=k;
long long ans=1;
int temp=p,s=b;
while (temp!=0)
{
if (temp%2==1)
ans=ans*s%k;
temp/=2;
s=s*s%k;
}
return ans;
}
=_=6素数和合数
埃氏筛法
先将数存进数组,找到第一个没被删除的数,在不越界的情况下删除所有这个数的倍数,它的时间复杂度是O(nlognlogn)的。
代码实现:
const int maxn=100000;
bool isprime[maxn];
void searchprime(int n)
{
memset(isprime,true,sizeof(isprime));
isprime[1]=false;
for(int i=2;i*i<=n;i++)
if (isprime(i))
{
intj=i*i;
while(j<=m axn)
{
isprime[j]=false;
j+=1;
}
}
}
还讲了神奇的欧拉算法,但是貌似没听太懂,就交一波代码:
void seive(int maxx)
{
memset(isprime,true,sizeof(isprime));
isprime[0]=false;
iaprime[1]=false;
for(int i=2;i<=macc;i++)
{
if (isprime[i])
prime[++total]=i;
for (intj=1;j<=total&&i*prime[j]<=maxx;j++)
{
idprime[i*prime[j]]=false;
if (!(i%prime[j]))
break;
}
}
}
=_=7gcd and lcm
显然…:a*b=gcd(a,b*lcm(a,b)
又是九条基本性质:
①已知(a,c)=1,若a | bc,则a | b;若a | b,c | b,则ac | b
②p为素数,若p | ab,则p | a或p | b
③[a,b]·(a,b)=ab
④(a,b)=(a,b-ac)=(a-bc,b)
⑤(n,n-1)=1 或(n,n-p)≤p
⑥m(a,b)=(ma,mb)
⑦若(a,b)=d,则(a/d,b/d)=1
⑧若a | m,b | m,则[a,b] | m
⑨m[a,b]=[ma,mb]
虽然大概了解了是什么鬼,但是要用的时候估计是记不起来的…
=_=8同余
a≡b(mod m)
竟然还是9-1条基本性质
①a≡a (mod m) ……自反性
②若a≡b (mod m),则b≡a (mod m)……对称性
③若a≡b (mod m),b≡c (mod m),则a≡c (mod m)……传递性
④若a≡b (mod m),c≡d (mod m),则a±c≡b±d (mod m),ac≡bd (mod m) ……同加、乘性
⑤若n|m,a≡b (mod m),则a≡b (mod n) ★★★
⑥若(m,n)=1,a≡b (mod m),a≡b (mod n),则a≡b (mod mn)
⑦若a≡b (mod m),n∈N*,则an≡bn (mod m) ……同幂性
⑧若ac≡bc (mod m),(c,m)=d,则a≡b (mod m/d )
嗯,比较懵逼…
=_=8&9
威尔逊定理:若p为素数,则(p-1)! ≡-1(mod p)。
威尔逊定理的逆定理:若p是正整数且(p-1)! ≡-1(mod p),则p为素数。
费马小定理:p是素数且(a,p)=1,则a^(p-1) ≡1(mod)p。
这真是两个神奇的定理,完全处于懵逼状态。
=_=10(last one)
欧拉函数:1~n中和n互素的元素个数φ(n)。
它的展开的定理真的是十分虚伪,绝对是损伤脑细胞的好方法。
晚上讲了KMP,表示听不清,于是自己上网搜,发现上网搜是一种好方法,直接让我自学,至少稍微懂了一点。