随笔分类 -  数论

摘要:积性函数+容斥 2019ICPC南昌邀请赛网络赛 G.tsy's number 题意 求$\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\frac{\phi(i)\phi(j^2)\phi(k^3)}{\phi(i)\phi(j)\phi(k)}\phi(gcd(i,j,k 阅读全文
posted @ 2019-04-22 16:33 7391_KID 阅读(362) 评论(0) 推荐(0)
摘要:分析:很容易想到lcm(n,m)是个周期。不妨设n<=m,设k=a*lcm+b*n+c, (0<=b*n<lcm,0<=c<n),记g=gcd(n,m),然后枚举数字num=0,1,2,枚举i=0,1,...,g-1,然后从i开始以n为步长走,直到回到原地,就得到了坐标为j*n+i的所有点走一个周期 阅读全文
posted @ 2017-10-11 18:02 7391_KID 阅读(451) 评论(0) 推荐(0)
摘要:链接:http://codeforces.com/gym/100801 题意:给一个正整数n,将n拆分为若干个数的和,每个数都是型如2^p*3^q,且两两互不整除。 分析:如果n=2^p*3^q,直接输出n;如果n=2^p*3^q*k,k不能被2或3整除,先拆分k,然后再把拆分结果乘2^p*3^q即 阅读全文
posted @ 2017-10-06 15:04 7391_KID 阅读(311) 评论(0) 推荐(0)
摘要:分析:注意到%的意义,n%i=n-[n/i]*i,所以F(n)=n^2-∑[n/i]*i,后面一项可以分块做,对i从1到sqrt(n)直接求,然后对后面的枚举[n/i],用等差数列求和。 阅读全文
posted @ 2017-09-29 21:57 7391_KID 阅读(297) 评论(0) 推荐(0)
摘要:链接:http://acm.hdu.edu.cn/showproblem.php?pid=6102 题解: 分析:有点难想。。首先逐个加入右端点,每加入一个,枚举倍数,和题解做法一样,然后更新每个Ai位置的值,当某个区间右端点恰好的刚刚枚举完的右端点时,这时候更新答案,对应询问的答案就是这个时候的区 阅读全文
posted @ 2017-08-15 00:45 7391_KID 阅读(275) 评论(0) 推荐(0)
摘要:链接:http://acm.hdu.edu.cn/showproblem.php?pid=6085 题意:给定长度分别为n,m的数组A和B,给定q个询问,每次询问给出一个k,求满足Ai%Bj=k的数对(i,j)的个数,结果mod2。 题解: 分析:简单说就是枚举Bi的倍数,在对应区间内得到k的个数, 阅读全文
posted @ 2017-08-13 02:11 7391_KID 阅读(232) 评论(0) 推荐(0)
摘要:链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1003&cid=762 题意:记d(n)为n的因子个数,给定l,r,k,求∑d(i^k),(i=l,l+1,...,r)。 分析:记n=(p1^a1)*(p2^a2)*... 阅读全文
posted @ 2017-08-03 22:43 7391_KID 阅读(172) 评论(0) 推荐(0)
摘要:题目链接:https://oj.neu.edu.cn/contest/70/problem/3 分析: 这题略坑。。O(nlogn)过不了,实际上t(1)=(p-1)/gcd(k,p-1),O(logp)可以得到t(1)。 官方题解: 阅读全文
posted @ 2017-07-23 15:56 7391_KID 阅读(730) 评论(2) 推荐(0)
摘要:分析:gcd的问题可以考虑用容斥原理做,注意到y<=100,只需要枚举不超过100的数k,算出图中有多少条边权是k的倍数的路径,然后容斥一下即可。关键在于怎么算路径条数。 可以考虑用dp,记dp[i][j][k]为从i到j路径值为k倍数的路径数,dp[i][j][k]=∑dp[c][j][k],c满 阅读全文
posted @ 2017-07-09 15:14 7391_KID 阅读(423) 评论(0) 推荐(0)
摘要:分析:也就是取任意多个数,它们的最大公约数都在这个集合里。考虑到ai比较小,可以枚举小于a中最大值的所有数,判断是否为其中若干个数的gcd。记c[k]为a中k的倍数的个数,然后枚举k的倍数i*k,c[i]<2直接跳过,如果c[i*k]==c[k],说明k的那些倍数也同时是i*k的倍数,k就可以不在集 阅读全文
posted @ 2017-07-06 22:30 7391_KID 阅读(187) 评论(0) 推荐(0)
摘要:链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=594&problem=4669&mosmsg=Submission+received 阅读全文
posted @ 2017-06-26 20:49 7391_KID 阅读(231) 评论(0) 推荐(0)
摘要:链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=326&problem=2290&mosmsg=Submission+received 阅读全文
posted @ 2017-06-26 17:02 7391_KID 阅读(159) 评论(0) 推荐(0)
摘要:分析:只要求出每个最大公约数出现的次数就可以了,而最大公约数必然是n的因子,考虑n的任意一个因子m,设t满足gcd(t,n)=m,等价于gcd(t/m,n/m)=1,由t<=n的t/m<=t/m,也就是说,这样的t的个数恰好是φ(n/m)个,故结果就是(m|n)∑m*φ(n/m).复杂度为O((lo 阅读全文
posted @ 2017-06-20 21:40 7391_KID 阅读(211) 评论(0) 推荐(0)
摘要:分析:用Miller-Rabin算法,预处理一些质数,取一个质数x,若n为质数,必然有x^(n-1)=1modn,但是反之不一定,若通过了前面的检验,将n-1分解为2^d*r,r为奇数,接下来检验x^(d-1)*r mod n,以此类推除二检验,直到mod的结果为-1或不能被二整除,若其中出现mod 阅读全文
posted @ 2017-06-01 17:55 7391_KID 阅读(677) 评论(0) 推荐(0)
摘要:分析:先写出前几项,发现都是有解的.记(1+√2)^n=a+b√2,可以归纳证明,当n为奇数时,m=a^2+1,n为偶数时,m=a^2.写出a的递推式,用矩阵快速幂算一下a即可. 阅读全文
posted @ 2017-05-27 22:13 7391_KID 阅读(150) 评论(0) 推荐(0)
摘要:题解: 分析:- - 完全是看着题解还想半天才会做的。。纠正一个错误,题解中的F(n)和S(n)中都应该是取整而不是下取整.首先S(n)的式子不难想到,问题就在于数据范围太大,强求会T掉.换一下求和顺序,枚举i/d,再枚举d,就可以将原式变形成一个对F(n)求和的式子,然后从1到n中,F(i)有重复 阅读全文
posted @ 2017-05-27 13:02 7391_KID 阅读(694) 评论(0) 推荐(0)
摘要:分析:考虑从1到n所有数的质因数分解,记录每个质数的最高次数,同理从n+1循环到2n,如果循环到m时每个质因子的次数都不低于所记录的,则跳出循环,结果即为m。先预处理质数,复杂度为O(nlongn)。 阅读全文
posted @ 2017-05-26 17:15 7391_KID 阅读(1041) 评论(0) 推荐(0)