数论
AC之路有笑有泪
搞ACM挺好的,就是头有点冷。
展开
-
51nod 1616 最小集合
题意:中文题意就不再描述。思路:我用f(x)表示x的倍数在n个数字中出现的次数(重复的只算一次),那么设y是x的倍数, f(y)一定是小于等于f(x)的,如果有一个y是符合f(y)=f(x)那么,这个x一定不会再这个集合中出现,因为x的倍数出现了f(x)次,但是这f(x)次的出现,都是伴随着y/x这个数字的,所以x一定是不会在集合中。举个栗子:3个数字:18 36 72,这个集合中只有这三个数字,不会有其他数字了。f(2)=3,f(4)=2,f(6)=3,f(8)=1,f(10)=0,f(12)=2,原创 2017-11-28 19:12:42 · 313 阅读 · 0 评论 -
51nod 1040 最大公约数之和(容斥思想)
思路:你可以确定的是1到n这些数字与n的gcd一定是n的约数,那么n的约数,你先枚举出来。假如是n=20,那么20的约数有:1,2,4,5,10,20; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (i) 1 2 1 4 5 2 1 4 1 10 1 4 1 2 5 4 1 2 1 20 (gcd)这些数字可以按照gcd的值进行分类。1,2,4,5,10,20(及按约数原创 2017-11-29 10:21:58 · 304 阅读 · 0 评论 -
51nod 1742 开心的小Q (容斥,分块)
1742 开心的小Q基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 如果一个数字存在一个约数是大于1的完全平方数,那么小Q就认为这个数是有趣的。小Q喜欢收集有趣的数字,每找到一个有趣的数,小Q就会变得很开心。小Q发现12是有趣的,18也是有趣的,它们都是36的约数,而在36的约数中,还有3个数是有趣的,它们是4、9、36。小Q很好奇,...原创 2017-11-28 15:36:42 · 419 阅读 · 0 评论 -
51nod 1225 余数之和 (分块思想)
思路:取余之后的数字是有规律的,比如说n=20的时候:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 200 0 2 0 0 2 6 4 2 0 9 8 7 6 5 4 3 2 1 0每一个下划线上的几个余数都是一个等差数列(可以O(1)求出),由下划线的第一个数字就可以求出最后一个数字,比如说7到10这一段,20/7=20/10,所以这些是一段,20/11=20/20所以11到20是一段。假如说第一个数字是i原创 2017-11-29 12:07:15 · 400 阅读 · 0 评论 -
51nod 1179 最大的最大公约数
题意:给你n个数字,任意两个数字都有一个最大公约数,那么最大的公约数为多少思路1:每个数字都能以sqrt(a)的复杂度枚举出a的所有因子。统计n个数字的所有因子出现的个数。然后从大到小枚举因子,输出最大的出现两次以上的那个因子。思路2:桶排序出现的n个数字。统计出最大值,然后开始从大到小枚举这个答案,对于每个可能的答案,只需要统计这n个数字中有多少个是这个答案的倍数。像素数筛法一样,枚举答案的倍数,如果有两个以上,那么这个数就是答案了。原创 2017-11-22 23:05:49 · 277 阅读 · 0 评论 -
51NOD 1217 Minimum Modular(数论)
题意:现在给你n个数字,你可以去掉k个,使得剩下的n-k个数字取余m的余数各不相同,求最小的m值。思路:由抽屉原理得m的最小值,不会小于n-k。所以从n-k开始枚举答案,算出这n个数字取余m的余数多少种,重复的有多少种,若大于k则不行。这样写就是暴力,会超时的,n如果很大的话,答案可能很大,每次都要暴力求n个数对m的余数。优化:同余的两个数字的差一定是答案的倍数。所以n^2处理出所有的差,用桶排序存下来,然后统计答案的倍数有多少个,如果个数大于k*(k+1)/2的话一定是 不可能的,直接continu原创 2017-11-22 23:43:43 · 315 阅读 · 0 评论 -
nowcoder数圈圈 | 51nod1042 数字0-9的数量
题意:0这个数字是一个圈,同样的,4,6,9,都是一个圈,8是两个圈,其他数字没有圈,样例给的很清楚。思路:前两天做过一道类似的题,跟这个做法一模一样(https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042)。先统计a到b这个区间(0-9)每个数字出现的个数,最后计算每个数字的贡献。现在问题是求每个数字出现了多少次。举个栗子:55211这个带下划线的位置出现了多少次的2(在1到55211这些数字中)答案是55*100+原创 2017-12-12 09:02:09 · 571 阅读 · 0 评论 -
51nod 1189 阶乘分数 (质因子分解,因子个数)
题意:给你一个N满足这个式子的X,Y有多少个。 1/N! = 1/X + 1/Y(0<x<=y)思路:先将式子变形成x*y-(x+y)*n!=0; 然后两边都加上 n!^2 ,及x*y-(x+y)*n!+n!^2 =(x-n!)*(y-n!)=n!^2;n!^2的所有因子,加上n!就是x,y了,所以这道题求n!^2的因子数量。最后去掉重复的即可;原创 2017-11-24 16:35:34 · 389 阅读 · 0 评论