数论
sky666tzz
这个作者很懒,什么都没留下…
展开
-
程序设计:蒜头君的数轴 计蒜客 - A1633
原题链接博客园没了以至于不得不用回CSDN思路:之前讲得很详细了GO想补充的是,如果选定区间能整除maxn,那么说明有多个区间gcd左右都是maxn.存储下这些区间,前缀和预处理每个区间要加的点数.取最小值即可,#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <algorithm>using namespace std原创 2021-03-18 21:21:10 · 102 阅读 · 0 评论 -
Fibonacci again and again HDU - 1848
原题链接考察:博弈论 sg函数思路:sg[0]为必败态,其中n,m,q是3个有向图游戏,根据定义它们的异或和是sg值.根据sg值判定胜负#include <iostream>#include <cstdio>#include <set>#include <cstring>using namespace std;const int N = 1010;int f[N],n,m,p,fb[N];int sg(int x){ if(f[x]!原创 2021-03-21 16:13:55 · 69 阅读 · 0 评论 -
Good Luck in CET-4 Everybody! HDU - 1847
原题链接考察:博弈论 sg函数思路:sg(0)是必败态,假设当前结点x枚举每一个x能达到的点,sg函数记录最小不能达到点.根据sg函数的性质,求出sg(n)的大小.#include <cstdio>#include <set>#include <cstring>#include <iostream> using namespace std;const int N = 1010;int n,f[N];int sg(int x){ if(原创 2021-03-21 15:51:04 · 129 阅读 · 0 评论 -
跳蚤 POJ - 1091
原题链接考察:容斥原理思路:实际是转化为a1x1+a2x2+a3x3+…+anxn = 1(取左边为正),这里有点容易想到买不到的数目那道题,比较容易联想到当gcd>1时就无解.但是真正推理是由exgcd推来,先看ax+by = 1转化为ax%b = 1%b(当此方程有解时是1==gcd(a,b))由此推到多维方程.#include <iostream>#include <algorithm>#include <cstdio>using namespa原创 2021-03-20 21:36:45 · 73 阅读 · 0 评论 -
GCD HDU - 1695
原题链接考察:容斥原理fw本f,二刷还是没想到.思路因为x,y与y,x是重复的,所以只计数x,y(y>=x)的个数.暴力枚举的话是O(n2),需要优化.一般优化第二重循环.也就是对于每一个x,找到与它gcd(x,y) = k的y.gcd(x,y) = k —>gcd(x/k,y/k) = 1.这里比较容易想到欧拉函数,但是欧拉函数求不出来,原因在与y/k互质的数不一定会与i/k互质.那么如何找到与x/k互质的数?将x/k分解质因数,如果x/k~y/k之间有质因数的倍数,那么一定不互质,原创 2021-03-20 19:00:50 · 152 阅读 · 0 评论 -
P1134 [USACO3.2]阶乘问题
原题链接考察:思维思路:0是由2和5的因子凑出来的,因此阶乘时只乘除2与5外的因子即可,但是2的因子比5的因子多,所以剩余还有2的因子数-5的因子数还没累乘,全部乘上%10即可.不要被0的数目束缚,求出100的数目 再%,这样可能会爆数据.#include <iostream>#include <cstdio>#include <cstring>using namespace std;int get(int n,int x){ int sum = 0原创 2021-03-19 23:48:05 · 175 阅读 · 0 评论 -
Mysterious Bacteria LightOJ - 1220
原题链接考察:唯一分解定理思路:之前的解法分类情况太多,复习本题想到更省事的解法.求最大的指数p,也就是x可以被某数的p次方表示.首先x可以分解为x=p1a1 *p2a2 …pnan 如果x可被某数的p次方表示,说明a1,a2,a3…都是p的倍数.由此想到gcd这里注意一下x可能为负数,此时指数一定为奇数#include <iostream>#include <cstdio>#include <vector>using namespace std;typ原创 2021-03-19 19:21:33 · 86 阅读 · 0 评论 -
Pairs Forming LCM LightOJ - 1236
原题链接考察:gcd与lcm思路:不能在计算单个质数方法的时候就/2,存在第一个质数大,后面质数小的情况.唯一要去掉的是p^a这个计算了2次,单个质数的时候-1.计算答案的时候,除了n,n外每个都算了2次,因此ans+1>>1#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef long long LL;const int N =原创 2021-03-19 16:23:43 · 91 阅读 · 0 评论 -
Goldbach‘s Conjecture LightOJ - 1259
原题链接考察:素数误区:n的范围是1e7,求n被两个质数拆,这里不是筛到√1e7,因为这里是质数和而不是质数积.#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int N = 1e7+10;int cnt,prime[N];bool st[N];void GetPrime(int n){ st[1] = st[0] = 1; for(i原创 2021-03-19 14:09:21 · 87 阅读 · 0 评论