随笔分类 - ACM_数论
摘要:通道题意:计算C(n,0)+...C(n,n)思路:转化为LCM(1...n)/ n代码:#include #include using namespace std;typedef long long ll;const int N = 1000000+2;const ll MOD = (ll)1e9...
阅读全文
摘要:通道思路:可以发现这序列是一段上升一段下降的锯齿形。先考虑拿到所有正数,此时如果段数大于m,考虑怎么最小代价减少段的数量,从 负数和最小的开始合并?而且要考虑负数和超过正数和的情形,注意特殊情况是这段和为0时,并不需要合并,直接跳过。减小个数的方案是,要么这段大于0,去掉这个及左右2边,并合并,这样...
阅读全文
摘要:通道思路:连续上升,连续下降的值放到set里面,然后对于大于m的集合双向链表进行合并,合并肯定是找绝对值最小的合并。代码:#include #include #include #include using namespace std;typedef long long ll;const int N ...
阅读全文
摘要:通道思路:先求一下从第一位开始的到第i位的累加,4,-1,5,-2,-1,2,6,-2=>4386571311对这个累加的数列排个序,然后只要判断邻近的两个数是否可以组成序列,比如4和3就不可以,因为4>3而4对应下标为0,3对应为1。4和5就可以,然后相同的前缀和取id最小,一开始丢个(0,0)进...
阅读全文
摘要:通道题意:计算(5+26√)1+2^x.思路:循环节是(p+1)*(p-1),然后就是裸的矩阵快速幂啦。代码:#include#include#include#include#includeusing namespace std;typedef long long ll;const int N = ...
阅读全文
摘要:通道题意:有3*n个人,分成n组,每组三个人。给出k个三元组,这三个人不可组队,问最后可以组队的总方案数思路:当k=0时,有(C[3*n][3]*C[3*n-3][3]*……*C[3][3])/n!种方案,展开以后可以得到dp[n]=(3*n)!/n!/6^n。显然可以写成递推式:dp[n]=dp[...
阅读全文
摘要:通道题意:给两个数a和b,然后在[a,b]内的每一个数y都可以表示成x^k=y,要求x尽量最小,k尽量最大,然后求所有的k之和思路:很容易知道[1,n]中有多少个数可以表示成k次方的形式,即n^(1/k)个,但是,一个数的平方包含了4 6 8 10……次方.如果知道至多只能表示成k次方的数有多少个,...
阅读全文
摘要:通道题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。思路:我们可以由n^(1/p),知道指数为p的有多少个数。通过观察,可以发现若一个数可以表示成x^(k*t),则可以表示成(x^k)^t。因此指数必然为素数。枚举素数便可以得到指数为p的个数,但是可能出现重复,例如:...
阅读全文
摘要:通道题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数思路:ans = cal(b, d) - cal(a - 1, d) - cal(b, c - 1) + cal(a - 1, c- 1),加上...
阅读全文
摘要:通道题意:给定整数N,求1#include #include using namespace std;typedef long long ll;template inline bool rd(T &ret) { char c; int sgn; if(c = getchar() , c ...
阅读全文
摘要:通道思路:可以证明点(x,y)与(0,0)所连线段上不包含原点有的点为gcd(x,y)于是问题就变成了求gcd(x,y)(1 #include#include#include#include#define inf 0x7fffffff#define ll long longusing namespa...
阅读全文
摘要:通道题意:有三个数N, M, K, 然后N个特定序列。 从这特定的序列里必须改变K个数字, 取值范围为 [1,M]。 然后求出各序列的最大公约数为1~M分别多少个思路:代码:#include #include #include using namespace std;//const int V = ...
阅读全文
摘要:通道题意:这题求[1,n],[1,m]gcd为k的对数。而且没有顺序思路:设f(k)为gcd(x,y)=k的数对(x,y)的对数,我们要求的是f(1)设F(k)为gcd(x,y)为k的倍数的数对(x,y)的对数,可以想到F(k)=floor(b/k)*floor(d/k),由莫比乌斯反演得:令lim...
阅读全文
摘要:通道题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数#include #include using namespace std;typedef long long ll;template inline bool rd(T &ret) { char c; int s...
阅读全文
摘要:通道题意:求gcd(a,b,c) = 1 a,b,c typedef long long ll;template inline bool rd(T &ret) { char c; int sgn; if(c = getchar() , c == EOF) return false; ...
阅读全文
摘要:通道题意:有一个5*6的矩阵,每个位置都表示按钮和灯,1表示亮,0表示灭。每当按下一个位置的按钮,它和它周围灯的状态全部翻转,问在这样的一个方阵中按下哪些按钮可以把整个方阵都变成灭的,这时1表示按了,0表示没按代码:#include #include #include #include #inclu...
阅读全文
摘要:通道题意:从1开始 每次等概率从一个点到和他相邻的点 有向 走到不能走停止 求停止时每个点的期望思路:白书P156代码:#include #include #include #include using namespace std; const int N = 105; co...
阅读全文
摘要:通道题意:1个人在数轴上来回走,以pi的概率走i步i∈[1, m],给定n(数轴长度),m,e(终点),s(起点),d(方向),求从s走到e经过的点数期望思路:E[x] = sum((E[x+i]+i) * p[i])(i∈[1, m]) ,(走i步经过i个点,所以是E[x+i]+i)E[x] = ...
阅读全文
摘要:通道题意:求一个区间[1,m]内与i的互质的数的个数。这里1#include #include typedef long long LL;const int maxn = 100010;LL ans;int n,m;int fac[maxn];int prime[maxn];int facCnt;v...
阅读全文

浙公网安备 33010602011771号