数论

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



也就是

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. Jmeter测试实践:文件上传接口

    1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何修改,完全保持默认.但是有人说Imple ...

  2. if __name__==__main__:的应用

    1. if __name__==__main__:代码的作用 python的文件有两种使用的方法:(1)直接作为脚本执行:(2)import到其他的python脚本中被调用(模块重用)执行: 因此if ...

  3. 使用Python监控Linux系统

    一.Python编写的监控工具 一.多功能系统资源统计工具dstat 1.dstat介绍 dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat.iosta ...

  4. strncat、strcat

    strncat函数 2007年03月15日 20:32:00 阅读数:13676 函数原型:extern char *strncat(char *dest,char *src,int n) 参数说明: ...

  5. 三维bfs(HUD1253胜利大逃亡)

    #include <stdio.h>#include <string.h>int map[51][51][51];int v[51][51][51];int a,b,c,t11 ...

  6. 基于Extjs+SpringMVC+MyBatis+Oracle的B/S信息系统简化开发思路

    要在上层简化就得有下层强大的架构作为支撑,通过采用企业级的各种框架,虽然学习成本高一些,但用好了效率也自然高. 数据层简化: 首先所有表都有名称为ID的主键字段.有与表同名的序列作为自增key. 数据 ...

  7. node-rsa 非对称加密和解密

    使用公钥和私钥的加密和解密: 非对称加密的关键在于 有 公钥 / 私钥用法:a.生成一对公钥私钥b.公钥加密 -> 对应私钥解密c.私钥加密 -> 对应公钥解密 非对称加密的常见应用方式a ...

  8. vue使用md5加密

    import crypto from 'crypto' export default { name: 'HelloWorld', data () { return { msg: 'Welcome to ...

  9. Java Selenium - 元素操作 (四)

    四,弹出框 京东购物车为例 , 点击‘删除’ 或者‘移到我的关注’ ,就会弹出下面这个框框,练吧: (其实这也不是常规的弹出框,二是div css前端技术做的效果,本想做个Alert的案例,实在不好找 ...

  10. 修改easydialog标题

    使用easyui作为前台框架极大的节省了项目资源,easyui官网文档中基本上囊括了所有的方法,但一些灵活性的方法文档中是找不到的,比如说动态替换窗口的属性,下边简单介绍些如何快速替换窗体的title ...