E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ2818
佳木斯集训Day2例题 数论
由于今天良心学长的题解非常详细还附带标程以及我答的特别水所以今天做例题的博客…今天的专题是数论----欧拉函数、欧拉定理、费马小定理、中国剩余定理一想起要打公式就头皮发麻…所以我有可能粘图片Gcd(
bzoj2818
Dawn-_-cx
·
2023-04-01 12:52
数论
集训
bzoj2818
(欧拉函数的应用!!!!!!!!!!!!!!)
给定整数N,求1=x,当y=x时,有且只有y=x=1互质,当y>x时,确定y以后符合条件的个数x就是phiy所以有序互质对的个数为(1~n/p)的欧拉函数之和乘2减1(要求的是有序互质对,乘2以后减去(1,1)多算的一次)那么就只需要先筛出欧拉函数再求个前缀和就可以了感觉有一部分欧拉函数题都是和gcd有关,就是两个数除以gcd就互质了,实际上只需要求互质的数即可然后又重复的,减去就行同时,做欧拉函
zhhx2001
·
2020-09-16 19:00
数论
【
bzoj2818
】Gcd
题意:略Ans只需预处理f(T)(就后面那串带p的)即可。以下为spoj的加强版(多询问):#include#definegcgetchar()#defineN10000009#definelllonglongusingnamespacestd;intT,n,m,mu[N],pri[N],pd[N],cnt;llans,f[N];intread(){intx=1;charch;while(ch=g
wzf_2000
·
2020-09-16 19:15
bzoj
数论
bzoj2818
Gcd(反演)
Description给定整数N,求1#include#include#definelllonglongusingnamespacestd;constintN=1e7+3;llphi[N];intsshu[2000000],tot=0;boolno[N];intn;voidmake(){for(inti=2;i<=n;i++){if(!no[i])sshu[++tot]=i;for(intj=1;
Coco_T_
·
2020-09-16 19:09
反演
bzoj2818
【莫比乌斯函数】【线性筛】
#include#include#include#include#includeusingnamespacestd;typedeflonglongLL;inlineintread(){intx=0;boolf=0;charc=getchar();for(;c'9';c=getchar())f=c=='-'?1:0;for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'
stony_oi
·
2020-09-16 19:39
数论函数
数论
bzoj2818
题意:1N)break;check[i*pri[j]]=1;if(i%pri[j]==0){phi[i*pri[j]]=phi[i]*pri[j];break;}elsephi[i*pri[j]]=phi[i]*(pri[j]-1);}}for(inti=1;iusingnamespacestd;typedeflonglongll;constintN=1e7+5;intn,tot;intphi[N
nkkkkk
·
2020-09-16 18:25
题解
数论
bzoj2818
Description给定整数N,求1#include#include#include#includeusingnamespacestd;constintMAXN=10000005;intmu[MAXN],prim[MAXN/10],cnt;boolf[MAXN];inti,n,m,j,k,l;longlongans;inlinelonglonggetans(intn){longlongtot=0
lpf_as_an_oier
·
2020-09-16 18:57
数论少许知识
【莫比乌斯反演】
BZOJ2818
Gcd
题面在这里反演裸题不解释示例程序:#include#includeusingnamespacestd;typedeflonglongll;constintmaxn=10000005;intn,p[maxn],mu[maxn],N=maxn-5;llf[maxn];boolvis[maxn];voidprepare(){mu[1]=1;N=min(N,n);for(inti=2;i<=N;i++){
linkfqy
·
2020-09-16 18:11
BZOJ
莫比乌斯反演
我的OI历程
常见OJ题解专栏
【
bzoj2818
】Gcd 欧拉函数
Description给定整数N,求1#include#include#includeusingnamespacestd;typedeflonglongLL;constintSZ=10000010;constintMAXN=10000000;boolvis[SZ];intpri[SZ],phi[SZ];LLsum[SZ];inttot=0;intn;voidshai(){phi[1]=1;for(
DQSSS
·
2020-09-16 18:32
===数学相关===
欧拉函数
gcd
BZOJ2818
http://www.lydsy.com/JudgeOnline/problem.php?id=2818题意十分简单数论的一道水题枚举小于n的质数对于每个质数分别乘上互质的数就可得到一组新的数对且该数对的gcd是该质数这让我们想到了欧拉函数首先枚举出小于1e7的质数(线性筛法)然后利用筛选法算出所有数的欧拉函数然后前缀和即可当枚举到了一个质数p那么ans+=B[n/p]*2-1n/p代表乘积小于n
Gipsyu
·
2020-09-16 17:19
数论
[
BZOJ2818
]Gcd(莫比乌斯反演)
题目:我是超链接题解:据说是数论,然而喵喵喵毅然决然写了莫比乌斯反演和上一道题目的柿子过程差不多啊。。。其实到这个位置已经能做了,但是枚举每一个t挺费劲,我们可以考虑这个相等的部分设分子为N,我们说相等的部分的值是N/t,等于这个值的最大在N/(N/t)的位置那么我们对于每一个相等的部分计算,对μ求前缀和算一下代码:#include#include#defineLLlonglongusingnam
wwyx2001
·
2020-09-16 17:59
莫比乌斯反演
bzoj2818
: Gcd 莫比乌斯繁衍
题意:给定整数N,求1=x,当y=x时,有且只有y=x=1互质,当y>x时,确定y以后符合条件的个数x就是phiy所以有序互质对的个数为(1~n/p)的欧拉函数之和乘2减1(要求的是有序互质对,乘2以后减去(1,1)多算的一次)那么就只需要先筛出欧拉函数再求个前缀和就可以了(fromhzwer)关键:题目很简单但是思想很有用。我们可以枚举每个数贡献来解决莫比乌斯繁衍的问题为什么第一种做法代码更快?
Thomas_ZQQ@Runespoor
·
2020-09-16 17:59
ACM
数论
bzoj2818
对于1~n中满足条件的数对的个数就是对于每个质数i来说,求[1....n/i]中互质的数的个数设y>=x,那么我们可以用sum[1]+sum[2]+.....+sum[n/i]维护出num(sum为欧拉函数的前缀和)有序的话乘2减1(因为(1,1)无序)/**************************************************************Problem:28
syh0313
·
2020-09-16 17:04
【
bzoj2818
】【GCD】【数论】
Description给定整数N,求1#include#includeusingnamespacestd;intp[1000001],phi[10000010],n;longlongans,s[10000010];boolf[10000010];voidcal(intn){phi[1]=1;for(inti=2;i<=n;i++){if(!f[i]){phi[i]=i-1;p[++p[0]]=i;
sunshinezff
·
2020-09-16 17:04
数论
【
BZOJ2818
】Gcd
好玩的题目0-0Description给定整数N,求1#include#include#include#include#defineMAXN10000100usingnamespacestd;intnum;intprime[MAXN],phi[MAXN]={0,1};longlongpre[MAXN];boolnot_prime[MAXN];longlongans;intn;voidprework
CreationAugust
·
2020-09-16 17:18
随便搞搞
BZOJ2818
:Gcd(莫比乌斯函数 & 欧拉函数)
2818:GcdTimeLimit:10SecMemoryLimit:256MBSubmit:5078Solved:2281[Submit][Status][Discuss]Description给定整数N,求1#include#include#definelllonglongusingnamespacestd;constintmaxn=1e7;shortmu[maxn+3];intprime[m
junior19
·
2020-08-21 00:31
数论
bzoj2818
GCD(莫比乌斯反演)
文章目录题意题解代码别说这么水的题居然还有人写博客。不是我水博客,是这种推式子的题没有latex我根本推不出来。题意求∑i=1N∑j=1N[gcd(i,j)∈P],N≤107\sum_{i=1}^{N}\sum_{j=1}^{N}[gcd(i,j)\in\mathbb{P}],N\le10^7i=1∑Nj=1∑N[gcd(i,j)∈P],N≤107题解推式子,首先枚举ppp∑p∈P,p≤N∑i=1
xyyxyyx
·
2020-08-07 22:25
题解
BZOJ2818
:Gcd(莫比乌斯反演)
Description给定整数N,求12#include3#defineN(10000000)4usingnamespacestd;56intn,m,vis[N+5],prime[N+5],mu[N+5],cnt;7longlongsum[N+5];89voidGet_mu()10{11mu[1]=1;12for(inti=2;im)swap(n,m);31for(intl=1,r;l<=n;l=
weixin_34221073
·
2020-08-07 20:18
bzoj2818
Gcd(欧拉函数前缀和)
求gcd(i,j)==p就是求gcd(i/p,j/p)==1。我们发现这就是欧拉函数前缀和。于是我们可以用素数筛处理出phi来做。注意是有序对的个数,所以每个p的贡献应该是sum[n/p]∗2−1#include#include#include#include#includeusingnamespacestd;#definelllonglong#defineinf0x3f3f3f3f#define
Icefox_zhx
·
2020-07-04 06:37
bzoj
欧拉函数
[
bzoj2818
]gcd
Description求∑i=1N∑j=1Ngcd(i,j)为质数的个数N#include#include#definefo(i,a,b)for(inti=a;in)break;bz[k]=1;if(!(i%p[j]))break;mu[k]=-mu[i];}}fo(i,1,p[0])fo(j,1,n/p[i])a[p[i]*j]+=mu[j];fo(i,1,n)a[i]+=a[i-1];for(
alan_cty
·
2020-07-01 16:32
莫比乌斯反演
欧拉函数
数论
分块
BZOJ2818
Gcd 素数筛+欧拉筛
题目描述:给定整数N,求1#include#include#include#includeusingnamespacestd;intn;intprime[700000],top;boolnot_prime[10001000];longlongans,phi[10001000];voidLinear_Shaker(){inti,j;phi[1]=1;for(i=2;i>n;Linear_Shaker
PoPoQQQ
·
2020-07-01 12:54
数论
线性筛
BZOJ
[
BZOJ2818
]Gcd(莫比乌斯反演)
题目描述传送门题解∑i=1n∑j=1n∑d=1prime[0][gcd(i,j)=prime[d]]=∑i=1n∑j=1n∑d=1prime[0][gcd(iprime[d],jprime[d])=1]=∑d=1prime[0]∑i=1nprime[d]∑j=1nprime[d][gcd(i,j)=1]=∑d=1prime[0]∑i=1nprime[d]∑j=1nprime[d]∑t|gcd(i,
Clove_unique
·
2020-07-01 08:04
题解
莫比乌斯反演
[HYSBZ\
BZOJ2818
][CQBZOJ2525]Gcd(最大公因数)
题目参见这篇blog,将m,n视为相等的即可。#include#includeusingnamespacestd;#defineMAXN10000000intmu[MAXN+10],p[MAXN+10],pcnt,n,sum[MAXN+10];longlongans;boolf[MAXN+10];voidRead(int&x){charc;while(c=getchar(),c!=EOF)if(c
outer_form
·
2020-07-01 03:51
莫比乌斯反演
BZOJ2818
Gcd[莫比乌斯反演]
E-GcdHYSBZ-2818题解:首先根据题意,设f(i)为gcd(x,y)=i的对数。对应的设(d=k*j[k>=1]因为总是忘记整除左大还是右大)F(j)我们可以很容易求出来,就是,因为F(j)代表在n里面所有gcd(x,y)=i其中i是j的倍数的所有情况。那么反过来就是,但是我们不单单只是求f(i)单项,而是求n里面gcd(x,y)=素数的情况。那么最终结果就是(p代表在n内的所有素数)。
ControlBear
·
2017-08-21 11:04
数论
数论---莫比乌斯反演
bzoj2818
: Gcd(第二次做)
链接http://www.lydsy.com/JudgeOnline/problem.php?id=2818题解可以欧拉函数O(NlogN),也可以莫比乌斯反演O(NN√logN)。别问我为什么能过,我也不知道…欧拉函数的话,直接枚举素数然后欧拉函数前缀和。莫比乌斯反演:枚举素数d,令n=⌊Nd⌋,然后就成了求∑i=1n∑j=1n[gcd(i,j)=1]即∑i=1n∑j=1n∑d|gcd(i,j)
*ACoder*
·
2017-02-22 15:22
#
莫比乌斯反演
#
欧拉函数
[
BZOJ2818
]Gcd
GcdDescription给定整数N,求1 usingnamespacestd; typedeflonglongll; constintMaxN=10000100; intn,tot,check[MaxN],prime[MaxN]; llans,phi[MaxN]; intmain(){ scanf("%d",&n); phi[1]=1ll; for(inti=2;in)break; che
hbhcy98
·
2016-04-08 18:00
数论
数学
欧拉函数
[
BZOJ2818
]Gcd(数论)
题目描述传送门题解∑i=1n∑j=1n∑d=1prime[0][gcd(i,j)=prime[d]]=∑i=1n∑j=1n∑d=1prime[0][gcd(iprime[d],jprime[d])=1]=∑d=1prime[0]∑i=1nprime[d]∑j=1nprime[d][gcd(i,j)=1]=∑d=1prime[0]∑i=1nprime[d]∑j=1nprime[d]∑t|gcd(i,
Clove_unique
·
2016-04-07 19:00
数论
bzoj
【
bzoj2818
】Gcd 线性筛法
gcd(x,y)=pgcd(x/p,y/p)=1枚举每个素数p,计算1~n/p中有多少对互质的数f[i]表示1~i中有多少个与i互质的数,即phi(i)g[i]表示f[i]的前缀和ans=2*∑g[n/p]-cntcnt是n以内素数的个数为什么?因为不能选p和p这种情况#include #include #include #include #include #include #definemaxn
u012288458
·
2016-03-28 21:00
[
BZOJ2818
] gcd - 欧拉函数+筛法
我们筛出N以内所有的素数,同时求出从1-N所有的欧拉函数值,最后枚举素数累加答案即可。#include"iostream" usingnamespacestd; typedeflonglongll; constintN=10000005; intn,tmp; inteular[N],prime[N]; llsum,esum[N]; voidEular_All(){lli,j; //筛选从1-n
whzzt
·
2016-03-22 21:00
【
BZOJ2818
】Gcd,数论练习之欧拉筛
传送门写在前面:比较简单的数论题目了思路:对i来说,所有与i互质的数和i都乘同一个质数p,那么得到的两个数的gcd一定是p,所以我们就可以利用这个来搞一搞了,对1-n的phi预处理出来(欧拉筛),然后i从1-n枚举,j从1-prime[0](prmie[0]为质数个数)只要i*prime[j]不超过n就加到答案里就可以了注意:当i=1时,phi只用加一次,但是其他情况就有相对的数对(x,y)与(y
xym_CSDN
·
2016-02-24 18:00
日常刷题系列
16codevs1725 探险 二分codevs1183 泥泞的道路 01分数规划poj3737 UmBasketella 三分法bzoj2659 算不出的算式 数论bzoj1607 轻拍牛头 数论
bzoj2818
xaphoenix
·
2016-02-17 01:00
bzoj2818
Gcd
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818题目大意:给你一个n,让你求使得gcd(x,y)为素数的有序数对(x,y)的个数,其中1 #include #include #include #include #include #definemaxn11000000 usingnamespacestd; typedeflonglon
xaphoenix
·
2016-02-17 00:00
[HYSBZ\
BZOJ2818
][CQBZOJ2525]Gcd(最大公因数)
题目参见这篇blog,将m,n视为相等的即可。#include #include usingnamespacestd; #defineMAXN10000000 intmu[MAXN+10],p[MAXN+10],pcnt,n,sum[MAXN+10]; longlongans; boolf[MAXN+10]; voidRead(int&x){ charc; while(c=getchar(),c!
outer_form
·
2016-01-27 09:00
C++
数论
gcd
bzoj
莫比乌斯反演
联赛刷水计划
CNT=9太弱了只会跟着别人的list刷水题T_T【
bzoj2818
】sb欧拉函数题gcd(x,y)==pgcd(x/p,y/p)==1然后就是枚举素数算一算phi(n/p)#include#defineFor
GEOTCBRL
·
2015-09-01 20:16
水题
联赛刷水计划
CNT=9太弱了只会跟着别人的list刷水题T_T【
bzoj2818
】sb欧拉函数题gcd(x,y)==pgcd(x/p,y/p)==1然后就是枚举素数算一算phi(n/p)#include #defineFor
GEOTCBRL
·
2015-09-01 20:00
gcd
phi
[
BZOJ2818
] Gcd
GcdTimeLimit:10SecMemoryLimit:256MBDescription给定整数N,求1n thenbreak; check[i*prime[j]]:=true; ifimodprime[j]=0 thenbeginphi[i*prime[j]]:=phi[i]*prime[j];break;end elsephi[i*prime[j]]:=phi[i]*(prime[j]-1
slongle_amazing
·
2015-07-18 15:00
BZOJ2818
Gcd(欧拉函数)
给定整数N,求1 #include typedeflonglongLL; LLphi[10000005]; intpri[10000005]; intmain() { LLans=0; intn,i,j,p=0; scanf("%d",&n); phi[1]=1; for(i=2;i<=n;i++) { if(phi[i]==0) { pri[++p]=i; phi[i]=(LL)(i-1); }
cjk_cjk
·
2015-06-02 23:00
欧拉函数
预处理
最大公约数
前缀和
BZOJ2818
Gcd 素数筛+欧拉筛
题目描述:给定整数N,求1 #include #include #include #include usingnamespacestd; intn; intprime[700000],top; boolnot_prime[10001000]; longlongans,phi[10001000]; voidLinear_Shaker() { inti,j; phi[1]=1; for(i=2;i>n
PoPoQQQ
·
2014-08-22 19:00
数论
gcd
bzoj
素数筛
欧拉筛
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他