摘要: HNOI的题。。。蛋疼的没有想到,看了discuss。。。 已知N+1个数,x1, x2, .. xn, m;使得gcd(x1, x2, ..., xn) = 1(mod m)。也就是说gcd(x1, x2,..., xn, m) = 1需要找x1, x2, ... ,xn这样的序列多少个。其实就是找到与m互素的数构造这个集合就可以。。。首先对m进行分解质因子,可以用容斥原理找到与m不互素的数构成的集合,用m^n减掉就可以了;ps:貌似这题不用高精度。//#pragma comment(linker,"/STACK:327680000,327680000")#include 阅读全文
posted @ 2012-11-03 11:36 AC_Von 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 题目是给出m,k。找到跟第k个跟m互素的数是多少。 构造肯定不行,再加上数据范围,只能二分。思路是二分枚举[1,2^64]范围内所有的数x,找到1到x范围内与m不互素的数的个数y(用容斥原理)。然后用x - y,如果等于k就是结果。找到1到x范围内与m不互素的数的个数y:这个过程可以先把m分解质因子,记录m所有的质因子。f[i]表示含有i个质因子的数的个数。ans = m - f(1) + f(2) - f(3) ....ps:这里二分要找满足 == k最左边的数,推了半天发现把二分写错了。。。T_T//#pragma comment(linker,"/STACK:327680000 阅读全文
posted @ 2012-11-03 11:28 AC_Von 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉。。。。已知有n个元素,sum[i]表示从1到i所有数的和。。。sum[i]%n可以得到一个剩余系,如果出现0,那么结果就找到了。如果不出现0,就可以用抽屉原理了。因为剩余系里只有[1,n-1]这些数,但是sum[i]%n会得到n个结果。n-1个抽屉放n个物品,必定有一个抽屉放的物品数大于等于2。也就是必定存在sum[j]%n == sum[i]%n。我们假设sum[i] > sum[j],所以有(sum[i] - sum[j])%n = 0; 从而得到结果。构造大概有O(n)的复杂度吧,开始想写O(n^2)。 阅读全文
posted @ 2012-11-03 11:20 AC_Von 阅读(386) 评论(0) 推荐(0) 编辑