数论

数论是研究整数性质的东西



也就是

lim   π(x)=x/ ln x

(x->无穷)

X越大越稀疏

证明:

∵ p|ab

∴ ab有因子p

设 a=p1k1p2k2......prkr

     b=q1t1q2t2......qwtw

那么ab= p1k1p2k2......pr‑kr q1t1q2t2......qw‑tw

∴ p1----- qw中一定有一个P,才能使p|ab

∴ p∈{ p1p2......pr‑ q1q2......qw}

∴ p|a 或者 p|b


证明:

存在性:

假设存在N是最小的不满足质因数分解的数

  N若是素数,N=N

∴ N是合数,存在p , N=p * N/p

 此时N/p也不可以质因数分解,那么N/p就比N小,与假设矛盾,证明存在性成立

唯一性:

假设存在N是最小的可以分解为两种不同方式的数

那么 N= p1k1p2k2......prkr    (1)

 = q1t1q2t2......qwtw  (2)

∴ p1| q1t1q2t2......qwtw          (3)

∴ p1∈{ q1t1q2t2......qwtw }

∴ p1| q1或者p1| q2.....或者p1| qw

∵ p1| q1,p1  q1均为素数,

∴ p1=q1

设 r1>=t1

(1)(2)同时除以p1t1

∴ p1r1 - t1......=q10.......

∴ 存在更小的可以分解为两种不同方式的数N/p1t1

  与假设矛盾,证明唯一性成立


素数与筛法


证明:

ax+by=c 有整数解  =>  gcd(a,b)|c

(充分)             (必要)

充分性

设d=gcd(a,b),那么d|a , d|b , 则d|ax+by=c

必要性

gcd(a,b)|c  =>  ax+by=c 有整数解

x,y是整数,ax+by>0

只需证出min(ax+by)=gcd(a,b)即可

设d=gcd(a,b)   s=min(ax+by) s>0

a/s = q.....r

r = a - qs = a - q (ax+by) =(1-qx)a - qyb

为了保证s最小,那么r=0,所以s|a , 同理可得s|b , 所以,s|gcd(a,b)即s|d

s=ax+by=x(nd)+y(md)   =>  d|s

因为s|d, d|s

所以s=d


PS:a%b=



注意这里是对于p的逆元

代替乘法

代码:

int size;

bool erfen(int x)
{
int l=,r=size;
while (l+!=r)
{
int m=(l+r)>>;
if (z[m]>=x) r=m;
else l=m;
}
return z[r]==x;
} int bsgs(int a,int b,int p)
{
size = sqrt(p); int nowv=;
for (int i=;i<=size;i++)
{
nowv = (long long)nowv * a%p;
z[i] = nowv;
if (z[i] == b) return i; //如果在列举第一行 已经找到了i,直接返回
}
sort(z+,z+size+);
for (int i=;(i-)*size+ <= p;i++)
{
int y = (long long)b * kuaisumi(kuaisumi(a,size*(i-),p),p-,p); //快速幂套快速幂 从后往前找,乘以逆元
if (erfen(y)) //发现x在这一行,暴力枚举一下
{
for (int j=(i-)*size+;j<=i*size;j++)
if (kuaisimi(a,j,p) == b) return j;
}
}
return -;
}


数论函数

带入一个正整数,输出一个整数

f(x)=y

x是正整数,y是整数

μ(x)

把x质因数分解:x=p1r1p2r2.......pkrk

令r = max { r1 , r2 , .... rk }

1  ( x=1 )

μ(x)=    0  ( r >1 )

(-1)k   ( r=1)

( k 表示 x 有k 个质因子)

举个栗子:

μ(4)=0;   μ(15)=1;   μ(1001)=-1

莫比乌斯函数是一个数论函数,它同时也是一个积性函数(i.e.μ(ab) =μ(a)μ(b), a,b互质)

当n不等于1时,n所有因子的莫比乌斯函数值的和为0   (d是n的因子)

举个栗子:

F(6)= f (1) + f (2) + f(3)+ f (6);

f (6) = F(1)μ(6)+ F(2)μ(3)+ F(3)μ(2)+ F(6)μ(1)

证明一下:

∑  μ(d)F(n/d) = ∑   μ(d)  ∑    f (d`)

d|n                        d|n           d`|n/d

= ∑        ∑     μ(d)f (d`)                        //交换求和符号   常用技能

d|n     d`|n/d

= ∑        ∑      μ(d)f (d`)

d`|n     d|n/d`

= ∑    [  f (d`)   ∑   μ(d) ]

d`|n            d|n/d`

= f ( n )

大概就是这样

举个栗子:

设f(n)=n    g(x)=Φ(n)

那么(f*g)(12) = f(12)*g(1)  +  f(6)*g(2)  +  f(4)*g(3)

+ f(3)*g(4)  +  f(2)*g(6)  +  f(1)*g(12)

= 12*1  +  6*1  +  4*2  +  3*2  +  2*2  +  1*4

枚举较小的因子

不再枚举1-i的所有因子

而是枚举i的两个因子  降低复杂度

PS:J是i的下一个因子

看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦看题啦

[ 1 <= x <= c , 1 <= y <= d ]

- [ 1 <= x <= a , 1 <= y <= d ]

- [ 1 <= x <= c , 1 <= y <= b ]

+ [ 1 <= x <= a , 1 <= y <= b ]

换个写法

如果括号里为真返回1 ,否则0

当然不可以从1-n,1-m都枚举一遍

n   m

∑   ∑ [ gcd ( i , j )=1 ]

i=1   j=1

n    m

= ∑   ∑     ∑   μ(d)

i=1   j=1  d|gcd( i,j )

只有当gcd为1 时候结果为1,否则为0;

很像莫比乌斯函数(n为1,莫比乌斯为1 ,否者为0)

第一步转化,转成莫比乌斯

第二部调∑顺序

n

∑    ∑      ∑    μ(d)

d=1  ad<=n  bd<=m

n

=∑   μ(d) ∑      ∑    1

d=1         ad<=n  bd<=m

n

=∑  μ(d) |_ n/d _| |_ m/d _|

d=1

O(n)复杂度,k次询问就是Kn  复杂度

式子和d,n都相关

PS:d=1-min(n,m)      (假设)n最大

可以提前吧μ(d)算出

d枚举1-n,下取整n/d有多少种可能

下面分两步

(1)       1<=d<=√n      |_ n/d _|

√n种取值

(2)       √n<d<=n       n/d < √n

√n种取值

复杂度O(√n)

n

=∑  μ(d) |_ n/d _| |_ m/d _|

d=1

箭头表示数值发生改变

括号表示在该区间内数值不发生改变

写一下代码

求μ(d)

Mu表示前缀和

Solve  给定d,n求

假设n<m

是区间右端的点

尝试证明

证明:

要证

代码呈现如下:

xian_xing_shai();

for (int a=;a<=n;a++)
sum_mu[a] = sum_mu[a-] + mu[a]; int solve(int n,int m)
{
int ans=;
//for (int d=1;d<=n;d++)
// ans += mu[d] * (n/d) * (m/d);
for (int d=;d<=n;)
{
int next_d = min(
n/(n/d),
m/(m/d)
);
ans += (sum_mu[next_d] - sum_mu[d-]) * (n/d) * (m/d);
d=next_d+;
}
return ans;
}

(不知道有没有用)

小结一下:

枚举P的倍数

∑化简:换个东西枚举或交换∑顺序

换成一个积性函数预处理

-----------------------------------------------------------------------------------------------------------------------------

这种题目特别好出

随便换一下你就要重新推好久。。。。

清明 DAY2的更多相关文章

  1. 清明培训 清北学堂 DAY2

    今天是钟皓曦老师的讲授~~ 总结了一下今天的内容: 数论!!! 1.整除性 2.质数 定义: 性质:  3.整数分解定理——算数基本定理 证明: 存在性: 设N是最小不满足唯一分解定理的整数 (1)  ...

  2. 【从零开始学BPM,Day2】默认表单开发

    [课程主题]主题:5天,一起从零开始学习BPM[课程形式]1.为期5天的短任务学习2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开放免费下 ...

  3. NOIp2016 Day1&Day2 解题报告

    Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...

  4. day2

    三级菜单: ))))))))))] last_levels.pop() ]]]]]]]]:] information = : ch = msvcrt.getch() ][][: : password= ...

  5. java day2一个模拟双色球的代码

    package day2; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt ...

  6. Python基础-day2

    1.Python模块python 中导入模块使用import语法格式:import module_name示例1: 导入os模块system('dir')列出当前目录下的所有文件 # _*_ codi ...

  7. 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数

    本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...

  8. 冲刺阶段 day2

    day2 项目进展 今天本组五位同学聚在一起将项目启动,首先我们对项目进行了规划,分工,明确指出每个人负责哪些项目.由负责第一部分的组员开始编程,在已经搭建好的窗体内,对系部设置进行了编写,本校共六个 ...

  9. python_way ,day2 字符串,列表,字典,时间模块

    python_way ,day2 字符串,列表,字典,自学时间模块 1.input: 2.0 3.0 区别 2.0中 如果要要用户交互输入字符串: name=raw_input() 如果 name=i ...

  10. 二模 (8) day2

    第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...

随机推荐

  1. Number (int float bool complex)--》int 整型、二进制整型、八进制整型、十六进制整型

    # ### Number (int float bool complex) # (1) int 整型 (正整数 0 负整数) intvar = 15 print(intvar) intvar = 0 ...

  2. 算法 -- 求最长公共字符串&PHP

    https://blog.csdn.net/hongyuancao/article/details/83308093 本文是利用PHP,求最长公共字符串.思路:利用动态规划和矩阵的思想. 动态规划:就 ...

  3. ansible 快速入门

    安装 $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ ...

  4. C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作,无法为请求的 Configuration 对象创建配置文件。

    应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本 ...

  5. [转]记解决一次“HTTP Error 400. The request URL is invalid”的错误

    今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid” 看到这种错误信息,一般的开发者心中可能会 ...

  6. QT linux

    一. 如果你是服务器版的CentOS,我建议你安装一下图形界面 1. 首先安装X window: yum groupinstall 'X WindowSystem'2. 然后安装GNOME: yum ...

  7. asp.net拦截器

    一 拦截器又称过滤器. asp.net mvc本身是自带3种拦截器:Action拦截器.Result拦截器.Exception拦截器. 应用中常见的拦截器有日志拦截器(Action拦截器)和异常处理拦 ...

  8. Linux平台Oracle 12.1.0.2 单实例安装部署

    主题:Linux平台Oracle 12.1.0.2 单实例安装部署 环境:RHEL 6.5 + Oracle 12.1.0.2 需求:安装部署OEM 13.2需要Oracle 12.1.0.2版本作为 ...

  9. 移动端的rem适配

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Mod制作第一个物品

    在通过Mod制作第一个物品时需要 一下几个步骤: 创建一个物品 通常在创建这个物品类的时候会继承Item或者是Block父类(因为Mod中的物品都是这个两个类的子类),在给类中使用了this.setU ...