数论
文章平均质量分 61
BraketBN
这个作者很懒,什么都没留下…
展开
-
【SPOJ-PRIME1】Prime Generator【区间质数筛】
果然SPOJ第二题就很有趣。因为n太大,线性筛和普通判断方法都不行。于是要用区间筛。先预处理出sqrt(n)以内的所有质数(大概是31622),埃氏筛可以承受,我写了线性筛。然后对于一段区间[m, n],我们枚举这些质数的倍数,然后除去区间内的这些倍数,剩下的就是质数了。有一点就是,枚举质数时当然不能一倍两倍的枚举。对于一个质数p,我们可以直接求出一个枚原创 2016-02-14 23:31:37 · 595 阅读 · 0 评论 -
【BZOJ2614】梦的困境【质因数分解】【背包】【GCD】
【题目链接】%段少,【lowsfish的题解】学习一发神奇的背包。不知道为什么要开LL。/* Pigonometry */#include #include #include using namespace std;typedef long long LL;const int maxn = 205, maxm = 200005;int cnt;原创 2016-04-08 09:10:29 · 491 阅读 · 0 评论 -
【BZOJ1441】Min【裴蜀定理】
【题目链接】a1x1 + a2x2 + ... + anxn = s有解,当且仅当gcd(a1, a2, ..., an) | s。所以s的最小值就是gcd。/* Pigonometry */#include #include using namespace std;int n, ans;inline int iread() { int f = 1, x =原创 2016-04-25 17:57:18 · 417 阅读 · 0 评论 -
【BZOJ1025】[SCOI2009]游戏【计数DP】【质因数分解】【置换】
【题目链接】只想到求和为n的数的lcm了...以为要求lcm然后离散化dp,最后发现1到1000的lcm已经炸了,然后就无奈了...iwtwiioi神犇说的非常清晰【链接】/* Footprints In The Blood Soaked Snow */#include #include using namespace std;typedef unsigned long原创 2016-03-27 20:54:20 · 734 阅读 · 0 评论 -
【BZOJ3629】[JLOI2014]聪明的燕姿【质因数分解】【暴搜】
【题目链接】有点神奇。膜拜一发【wulala的题解】/* Footprints In The Blood Soaked Snow */#include #include #include using namespace std;typedef unsigned long long ULL;const int maxn = 50005;int n, cnt, p原创 2016-03-28 16:10:34 · 574 阅读 · 0 评论 -
【SPOJ-NAGAY】Joseph’s Problem【余数求和】【分块】
题意:给出n,k。求n和k都是10^18,sqrt(k)理论上过不了,但是还是过了...题挺好。这题的分块和一般的分块不太一样,直接看图吧。设k = d * x + r。发现每个块内都是一个等差数列,公差就是d。于是我们枚举d,按d分块。对于一个块[L, R](指的是i的区间),显然R = k / d,L用上一块的末尾加1,就是L原创 2016-02-22 12:28:51 · 1386 阅读 · 1 评论 -
【BZOJ1485】[HNOI2009]有趣的数列【Catelan数】【线性筛】
【题目链接】这个质因数分解劲啊【xkui的题解】/* Telekinetic Forest Guard */#include #include #include using namespace std;typedef long long LL;const int maxn = 2000005;int n, m, p, prime[maxn], mn[maxn]原创 2016-05-26 16:41:18 · 619 阅读 · 0 评论 -
【BZOJ1477】青蛙的约会【扩展欧几里得】
【题目链接】/* Telekinetic Forest Guard */#include #include using namespace std;typedef long long LL;inline void exgcd(LL &x, LL &y, LL a, LL b) { b ? (exgcd(y, x, b, a % b), y -= a / b * x) :原创 2016-05-04 23:09:59 · 584 阅读 · 0 评论 -
【BZOJ2445】最大团【推公式】【中国剩余定理】【扩展Lucas】
【题目链接】公式为:设 ans = ∑(n! / ((d!)^(n/d)*(n/d)!))则答案为m ^ ans证明:考虑现在有d * k个点,d代表每个团的点数,那么k就是个数了,记方案数为Ak。然后现在又来了d个点,记方案数为Ak+1。(即现在有n = d * (k + 1)个点)我们选择一个点,让这个点与其他的d - 1个点组成团,方案数为C(d *原创 2016-05-30 07:54:07 · 1007 阅读 · 0 评论 -
【Uva10791】Minimum Sum LCM【LCM】【质因数分解】
Uva上不去,只能去vjudge啦。http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19594大白上的题。这个题解挺详细:http://www.cnblogs.com/scau20110726/archive/2013/01/18/2866101.html一开始没注意只有单个质因数的情况,wa了几发..原创 2016-03-14 16:13:23 · 445 阅读 · 0 评论 -
【BZOJ1385】[Baltic2000]Division expression【GCD】
【题目链接】大晚上刷水题玩。发现X2一定是分母,而其他的Xi都可以变为分子,所以让其他的Xi都成分子,这样为整数的可能性更大。然后用gcd搞一搞,如果可以约掉,那么就YES,否则NO。注意Xi比较大,不能先乘再除。/* Pigonometry */#include #include using namespace std;const int maxn = 10005原创 2016-04-05 23:04:47 · 353 阅读 · 0 评论 -
【BZOJ1101】[POI2007]Zap【Mobius函数】
【题目链接】题解很多就不写啦。/* Pigonometry */#include #include using namespace std;typedef long long LL;const int maxn = 50005;int n, m, d, prime[maxn], cnt, mu[maxn];bool isnotprime[maxn];inlin原创 2016-04-05 08:25:39 · 425 阅读 · 0 评论 -
【SPOJ-TRANSP】Transposing is Fun【Pólya】【欧拉函数】【二进制】
题解见更高级的版本:http://blog.csdn.net/braketbn/article/details/50668414#include using namespace std;typedef long long LL;const int maxn = 1000001, p = 1000003;int a, b, n, pow[maxn], phi[maxn],原创 2016-02-16 09:17:24 · 939 阅读 · 0 评论 -
【证明】关于项链问题中旋转操作的置换群的循环节个数、长度的证明【Pólya】【同余】
做POJ2154时,对于”置换的循环节的个数为gcd(i, n)"表示疑惑,但是看了很多blog,发现都没有证明这个结论,于是这里做个简单的证明。设一开始珠子的位置在p点,每次旋转x格。先证明循环节长度为n / gcd(x, n)。假设这个珠子走了k次回到p点,那么有减去p,有说明了kx是n的倍数,即又显然有kx是x的倍数原创 2016-02-15 17:09:16 · 2524 阅读 · 0 评论 -
【SPOJ-ALICESIE】Alice Sieve【数论】
题意:一开始有2 3 ... N,N - 1个数,初始都未被标记。首先找到最大的未被标记的数N,把他的约数都标记上(不包括本身),然后在2 ... N - 1里继续重复操作。问最后没有被标记的数有多少个。难得的一行代码题。从2到n / 2都会被标记,剩下的就是没有被标记的,答案为n - n / 2(或者(n + 1) / 2)#include int原创 2016-02-21 17:59:00 · 336 阅读 · 0 评论 -
【SPOJ-YELBRICK】The Yellow Brick Road【GCD】
题意:给出n个长方体,要割出相同大小的正方体,并使得正方体的个数尽可能小。所有的长方体必须用上,且不能丢弃材料。个数尽可能少就是让边长尽可能大。因为要整除所有的边,那么显然对所有的长方体的长宽高取gcd就好了。算的时候注意开LL。#include typedef long long LL;const int maxn = 1005;int n原创 2016-02-21 19:27:32 · 690 阅读 · 0 评论 -
【SPOJ-BTCODE_A】Traversing Grid【GCD】
题意:给出一个起点,一个终点。对于一个点(x, y),有四种变换。1 (y, x)2 (x, -y)3 (x + y, y)4 (2 * x, y)问能否从起点到达终点。这题做了2个月...最后发现是少了一个特判。我们发现,对于前3个操作,(x, y)可以变成(x, -y) (-x, y) (-x, -y) (x + y, y) (x+ y, -y)原创 2016-02-20 12:41:57 · 616 阅读 · 4 评论 -
【BZOJ1257】[CQOI2007]余数之和sum【余数求和】【分块】
详见http://blog.csdn.net/braketbn/article/details/50715971#include typedef unsigned long long ULL;ULL n, k;int main() { scanf("%llu%llu", &n, &k); ULL ans = 0; for(ULL i = 1, l, r; i原创 2016-02-22 13:25:23 · 1248 阅读 · 0 评论 -
【SPOJ-TRANSP2】Transposing is Even More Fun【Pólya】【欧拉函数】【二进制】
这个题真有趣...参考了http://www.cnblogs.com/jianglangcaijin/archive/2013/12/04/3457446.html,感觉这篇文章写得挺不错。举个具体例子来说。当a = 2,b = 1时,如图:我们要将它转置为:我们按二进制写下他们的坐标变化情况我们发现:1还在自己的位置。2从0原创 2016-02-15 14:58:01 · 1461 阅读 · 22 评论 -
【SPOJ-GCDEX】GCD Extreme【欧拉函数】【线性筛】
题意:求∑(1 白书上原题...注意卡常就可以过。#include typedef unsigned long long ULL;typedef unsigned int uint;const int maxn = 1000001;int cnt;int prime[maxn], phi[maxn];ULL f[maxn];bool isnotpri原创 2016-02-24 08:52:44 · 591 阅读 · 0 评论 -
【BZOJ1968】[Ahoi2005]COMMON 约数研究【数论】
【题目链接】对于数字i,在1到n中,一共有n / i个数是i的倍数。/* Think Thank Thunk */#include #include #include using namespace std;inline int iread() { int f = 1, x = 0; char ch = getchar(); for(; ch '9'; ch = g原创 2016-07-15 11:31:08 · 715 阅读 · 0 评论