5.23非常虚伪的集训总结

本文介绍了数论的基础概念,包括不同进制之间的转换、数字分离、回文数等,并详细探讨了快速幂算法及其应用。此外,还讲解了素数筛选方法、欧拉算法、最大公约数与最小公倍数的概念及性质,以及同余理论等内容。

讲了非常虚伪的数(shou)论

=_=1进制转换

进制转换是在基础篇内的最后一章,虽然学的有点仓促,但是听起来还是听得懂的,权当复习加巩固了一次。

=_=2数字分离

感觉很水

=_=3回文数

=_=4整除

9条性质

1d|a,则对于任意整数kd|ka

2a|bb|a,则有a=b      ……对称性

3c|bb|a,则c|a         ……传递性

4c|ad|b,则cd|ab

5c|ac|b,则c|(ma+nb)

6nN*,则(ab)|(anbn)

7n为奇数,则(ab)|(anbn);

8n为偶数,则(ab)|(anbn)

9任意n个连续正整数的乘积必能被n!整除

=_=5分解整数

=_=6快速幂

快速幂是非常好用的,它的时间复杂度是Olog 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素数和合数

埃氏筛法

先将数存进数组,找到第一个没被删除的数,在不越界的情况下删除所有这个数的倍数,它的时间复杂度是Onlognlogn)的。

代码实现:

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)

又是九条基本性质:

①已知(ac)=1,若a | bc,则a | b;若a | bc | b,则ac | b

p为素数,若p | ab,则p | ap | b   

[ab]·(ab)=ab

(ab)=(abac)=(abcb)

(nn-1)=1  (nn-p)≤p

m(ab)=(mamb)

⑦若(ab)=d,则(a/d,b/d)=1

⑧若a | mb | m,则[ab] | m  

m[ab]=[mamb]

虽然大概了解了是什么鬼,但是要用的时候估计是记不起来的

=_=8同余

ab(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|ma≡b (mod m),则a≡b (mod n)      ★★★

⑥若(mn)=1a≡b (mod m)a≡b (mod n),则a≡b (mod mn)

⑦若a≡b (mod m)nN*,则an≡bn (mod m) ……同幂性

⑧若ac≡bc (mod m)(cm)=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

这真是两个神奇的定理,完全处于懵逼状态。

=_=10last one

欧拉函数:1~n中和n互素的元素个数φ(n)

它的展开的定理真的是十分虚伪,绝对是损伤脑细胞的好方法。

拒绝访问

晚上讲了KMP,表示听不清,于是自己上网搜,发现上网搜是一种好方法,直接让我自学,至少稍微懂了一点。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值