
筛法
WerKeyTom_FTD
这个作者很懒,什么都没留下…
展开
-
找数
题目大意及模型转换找出第N个最小素因子是P的正整数。 N,P<=10^9,如果结果超过10^9则输出0否则输出这个数。超过10^9我们先来处理结果超过10^9。 显然,对于一个质数p,第一个符合条件的是自己,第二个就是p*p。 我们发现p<=10^9,也就是说,n=1的情况所有质数都不会超过10^9。 超过的情况会从第二个开始。 那么首先可以知道,对于大于109−−−√\sqrt{10^9原创 2015-08-30 20:13:01 · 999 阅读 · 1 评论 -
蛋糕
题目大意CJY很喜欢吃蛋糕,于是YJC弄到了一块蛋糕,现在YJC决定和CJY分享蛋糕。 这块蛋糕上有n^2颗葡萄干,排成了一个n*n的点阵,每颗葡萄干互不相同且被编号为1~n^2。YJC决定沿着一条直线把蛋糕切成两份。YJC和CJY都很喜欢吃葡萄干,所以切出的两份蛋糕必须都包含至少一颗葡萄干。同时他们都不希望吃到不完整的葡萄干,所以切的时候不能经过任意一颗葡萄干。CJY喜欢1号葡萄干,所以他选择了原创 2017-04-18 11:32:40 · 693 阅读 · 0 评论 -
[bzoj4815][CQOI2017]小Q的表格
题目描述小Q是个程序员。 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理。每当小Q不知道如何解决 时,就只好向你求助。为了完成任务,小Q需要列一个表格,表格有无穷多行,无穷多列,行和列都从1开始标号。 为了完成任务,表格里面每个格子都填了一个整数,为了方便描述,小Q把第a行第b列的整数记为f(a,b),为了完成 任务,这个表格要满足一些条件:(1)对任意的正原创 2017-06-16 17:12:32 · 690 阅读 · 0 评论 -
[CodeM初赛A轮]D
题解用sqrt(a)/log a的时间分解质因数。 枚举一个质因数x,所有x的倍数节点打标记。 对于每一个被标记的联通块求直径。#include<cstdio>#include<algorithm>#include<map>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const原创 2017-06-18 22:18:59 · 661 阅读 · 3 评论 -
[JZOJ5134][SDOI省队集训2017]三元组
题目大意求∑ai=1∑bj=1∑ck=1[(i,j)=1][(i,k)=1][(j,k)=1]\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c[(i,j)=1][(i,k)=1][(j,k)=1]推式子首先假设a<=b<=c。 第一步转化为 ∑ai=1∑bj=1,(j,i)=1∑ck=1,(k,i)=1[(j,k)=1]\sum_{i=1}^a\sum_{j=1,(j,i原创 2017-06-09 21:24:28 · 896 阅读 · 0 评论 -
[51nod1355]斐波那契的最小公倍数
题目大意求n个斐波那契数的最小公倍数。做法首先斐波那契数列有性质(fn,fm)=f(n,m)(f_n,f_m)=f_{(n,m)} 具体证明不证了,烂大街的性质了。 构造数列g满足 fn=Πd|ngdf_n=\Pi_{d|n}g_d 可以用莫比乌斯反演求出g gn=Πd|nfμ(nd)dg_n=\Pi_{d|n}f_d^{\mu(\frac{n}{d})} 接下来我们知道求lcm可以转化原创 2017-06-25 22:33:29 · 1104 阅读 · 0 评论 -
春思
题目大意求a^b的约数和。基础题分解出a的质因数即可,然后算等比数列和可以倍增。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int mo=9901;ll i,j,k,l原创 2017-09-11 22:27:23 · 451 阅读 · 0 评论 -
[2017集训队作业自选题#115]Replace All
题解推荐wxh 可爱的修修 本题相较于CF794G,n加0了。 我们需要快速计算 ∑ni=1∑nj=12(i,j)\sum_{i=1}^n\sum_{j=1}^n2^{(i,j)} ∑nd=12d∑n/di=1∑n/dj=1[(i,j)=1]\sum_{d=1}^n2^d\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}[(i,j)=1] ∑nd=12d∗(2∗∑n/di=原创 2017-11-17 10:55:59 · 1214 阅读 · 0 评论 -
Psy
题目大意一个字符集为0~9的长度为n的数字串,f(n)为其本身的字典序在所有后缀中是严格最小的字符串的数量。 求∑ni=1f(i)∗i2\sum_{i=1}^nf(i)*i^2结论我们发现一个有周期的串的本身不可能是严格最小后缀。 对于没有周期的串,当做循环串来看,可以转出n个不同的字符串,一定只有一个能被算入f(n)。 可以知道f(n)是没有周期的串个数除以n。 f(n)=∑d|nμ(d)原创 2017-11-23 15:32:20 · 784 阅读 · 0 评论 -
[2017集训队作业自选题#134]Counting Divisors (square)
题目大意&题解同SPOJ DIVCNT2#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int maxn=70000000+10;int pri[maxn/10],mu[m原创 2017-12-21 21:14:58 · 922 阅读 · 0 评论 -
[51nod1238]最小公倍数之和
题目大意出一个数N,输出小于等于N的所有数,两两之间的最小公倍数之和。题解太懒了 这里写的很好#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int maxn=10000000+10,maxha=1000原创 2017-04-18 10:31:24 · 866 阅读 · 0 评论 -
[luoguP3601]签到题
题目大意求[l,r]区间phi函数和。 l和r均在10^12内,而l和r的差在10^6内。筛phi都知道怎么求了。 一个10^12的数至多一个大于10^6的质因子。 筛出10^6内所有质因数,然后枚举每个质因数。 用这个质因数去[l,r]筛。 最后再扫一遍判断大于10^6的质因子的情况。#include<cstdio>#include<algorithm>#include<cmath>原创 2017-02-15 14:55:09 · 430 阅读 · 0 评论 -
[51nod 1222]最小公倍数计数
题目大意求有多少对a和b满足a<=b且l<=[a,b]<=r数论题区间[l,r]答案等于[1,r]-[1,l-1] a<=b暂且不考虑。为了方便,接下来都不写下取整,出现除法即为整除。 ∑ni=1∑nj=1[ij(i,j)<=n]\sum_{i=1}^n\sum_{j=1}^n[\frac{ij}{(i,j)}<=n] ∑nd=1∑ni=1∑nj=1[(i,j)=d]∗[ijd<=n]\sum原创 2017-01-17 22:35:51 · 728 阅读 · 0 评论 -
数学之神
题目大意求在n(n<=10^7)以内的正整数中与其互质的个数以及这些数的和。phi第一问相当于求phi(n),那第二问呢? 注意到如果gcd(n,a)=1,那么gcd(n,n-a)=1,这两个数都与n互质且和为n。 那么只要n不为2,答案就为phi(n)*n/2。 巧合的是n为2也符合这个式子。优化筛法我们发现直接筛phi很慢,过不了。 我是蒟蒻不会线性筛,但在考场上想到了这样一个方法通过了原创 2015-09-28 13:20:41 · 908 阅读 · 0 评论 -
[SDOI2008]沙拉公主的困惑
题目大意求n!中与m!互质的数的个数。显然的结论就是求n!∗Πk|m!k−1kn!*\Pi_{k|m!} \frac{k-1}{k} 至于为什么就不说了,太过显然。 然后预处理阶乘,后面那个与m有关可以预处理,为了不超时还要线性求逆。#include<cstdio> #include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using na原创 2016-08-16 15:15:12 · 593 阅读 · 0 评论 -
math
题目描述简单题我们观察d(i*j)什么是奇数 i*j是完全平方数时! 我们现在要找√(i*m)中有多少至少包含i每个因子一半的。 为了得到这个i的“一半”,线筛一发就好了。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;ty原创 2016-09-18 21:12:00 · 334 阅读 · 0 评论 -
Walk
题目大意给定一颗边权树,对于任意i求出f[i]表示一条长度为i的简单路径gcd的最大值。瞎做我们可以把每条边挂在其的约数上,使用质因数分解。 对每个gcd做一下,对保留的所有边构出新树,然后对于所有这些边涉及到的点形成的每个联通块用两遍dfs求直径,最终得到森林的最长链。 设最长链为k,当前枚举的gcd为v,则f[k]=max(f[k],v)f[k]=max(f[k],v) 这样做显然会错,但原创 2016-11-08 22:36:50 · 404 阅读 · 0 评论 -
[51nod 1223]分数等式的数量
题目大意有这样一个分数等式:1/X + 1/Y = 1/N,(X,Y,N > 0)。给出L,求有多少满足X < Y <= L的等式。 例如:L = 12,满足条件的等式有3个,分别是:1/3 + 1/6 = 1/2, 1/4 + 1/12 = 1/3, 1/6 + 1/12 = 1/4。数论题大师张俊不教我我不会。。 其实就是求多少对(a,b)满足a+b|ab 设d=(a,b),a1*d=a,原创 2016-12-12 22:10:45 · 815 阅读 · 0 评论 -
[51nod 1594]Gcd and Phi
题目大意求所有(i,j)满足1<=i<=n和1<=j<=n,phi(i)和phi(j)的gcd的欧拉函数值和。数论题挺简单的。 枚举gcd然后莫比乌斯反演一波。 接下来的式子中需要用到的均能够进行n log n预处理。 式子不太想写了, 可以看看代码。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) f原创 2016-12-12 22:13:32 · 759 阅读 · 0 评论 -
[51nod 1203]JZPLCM
题目大意求区间lcm。带模运算。做法不知道有没有更简单的做法。 最小公倍数是什么意思?一堆数的最小公倍数,就是对于每一个质数p,这些数每个数中p的次数的最大值k,然后最小公倍数就会包含一个p^k。 p很大时k会很小,p很小时k会很大,这是两个互相制约的因素,因此考虑使用两种算法然后进行平衡结合。 设置阈值B=230(差不多就是√n) 对于所有<=B的质数p都枚举一遍,然后计算出每个数包含多少原创 2016-12-12 22:24:27 · 891 阅读 · 0 评论 -
[51nod 1375]再选数
题目描述从前有n个正整数,我们令它为a[1]到a[n]。现在要从选出恰好k个数(如果k=-1则为选任意个数,但是至少选一个),要求这些数的最大公约数是1,问有多少种方案? 答案可能很大,模998,244,353输出。搞一发可以设f[x]表示选出恰好k个数gcd为x的方案数。 设g[x]表示选出恰好k个数gcd为x的倍数。 于是就可以莫比乌斯反演一发。 求f[1]即可。#include<cst原创 2016-12-08 17:34:34 · 543 阅读 · 0 评论 -
[51nod 1362]搬箱子
题目描述有一个n*m的棋盘,左上角为(0,0),右下角为(n,m).在左上角有一个箱子(箱子是放在交叉点上的)。现在要把箱子搬到最后一排。搬的时候只有向右,向下,或者向右下方走一步。也就是说,假如箱子在(x,y),那么下一步只能把他搬到(x+1,y)或(x,y+1)或(x+1,y+1). 问有多少种的走法可以把箱子从左上角搬到最后一排。由于数目巨大,对X取余输出即可。题目大意考虑走到(n,j)的方原创 2016-12-21 22:43:21 · 991 阅读 · 0 评论 -
[51nod 1333]无聊的数学家
题目描述http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1333做法很有趣的题目。 首先,怎么知道对方无法100%猜中? 考虑对方什么时候100%猜中。显然是拿了个质数。 因此和S一定不可以被表示成质数+1,不然对方100%猜中。 B说的那句话也就是告诉了C这样的信息“我的数不是质数+1” 那么为什么C就猜出来了呢原创 2017-01-12 20:32:08 · 643 阅读 · 0 评论 -
[51nod 1184]第N个质数
题目大意找第n个质数,n<=1e9乱搞Drin_E大爷教我的洲阁筛。 但是好像不是正统。 我们可以二分,所以只是判断质数个数的问题。 设c[i]表示第i个质数。 f[i]表示i以内质数个数。 设g(n,m)表示n以内不被c[1~m]整除的数个数。 设q=√n,那么n以内质数个数为f[q]+g(n,f[q])-1(1不是质数要减去) 显然g(n,m)=g(n,m-1)-g(n/c[m],原创 2017-01-12 20:52:02 · 2546 阅读 · 0 评论 -
[2017集训队作业自选题#148]Simple Summation Problem
题目大意定义一个积性函数F。 若p为质数,F(pd)=pd−[d mod p!=0]F(p^d)=p^{d-[d\ mod\ p!=0]} 求F的前缀和。做法令G=F∗μG=F*\mu,那么G也是一个积性函数。 那么容易得到G(pd)=pd−[d mod p!=0]−pd−1−[(d−1) mod p!=0]G(p^d)=p^{d-[d\ mod\ p!=0]}-p^{d-1-[(d-1)\原创 2017-12-21 21:20:48 · 995 阅读 · 0 评论