数论
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
luogu2662 牛场围栏(数论+最短路)
同余类spfa,以%最小数n的余数分类,建n个点,然后用其他的数去建边,从0开始跑最短路,每一种能凑出的最小数就是dis,而最大的不能凑出来的数就是dis-n。原创 2017-11-20 11:23:37 · 612 阅读 · 0 评论 -
bzoj2219 数论之神(CRT+BSGS+数论)
嗯,在三天之后,我终于把这题A了qaq 太神了。orz po姐题解:portal(配合评论食用效果更佳哟)原创 2018-04-07 13:55:07 · 305 阅读 · 0 评论 -
bzoj4891 [Tjoi2017]龙舟(pollard-rho+素数检测)
这题主要问题在于我们要求一个大数对大数的逆元。 我们考虑把大模数分解质因数之后就可以O(mlogV)O(mlogV)的上下约分,然后看分母是否和大模数互质,以判断是否存在逆元。然后这个大数如何质因数分解呢?我们可以用pollard-rho+miller-rabin来做。复杂度O(n1/4)O(n^{1/4}) pollard-rho怎么做呢?大概就是你每次随机若干个数去试,看他们是不是n的因子,原创 2018-04-18 14:48:32 · 476 阅读 · 0 评论 -
bzoj2186 [Sdoi2008]沙拉公主的困惑(数论)
求1~n!中与m!互质的数的个数。 最后结论就是n!∏pi−1pin!\prod \frac{p_i-1}{p_i} 有点像欧拉函数那样,我们线性筛预处理素数,阶乘,逆元即可。原创 2018-04-05 16:37:29 · 235 阅读 · 0 评论 -
bzoj1041 [HAOI2008]圆上的整点(数论)
题解传送门:portal原创 2018-04-04 16:57:26 · 239 阅读 · 0 评论 -
bzoj1053 [HAOI2007]反素数ant(数论+搜索)
求一段区间内最大的反质数,其实就是求一段区间内约数个数最大的数,如果有多个取最小的。我们知道 x=∑i=1kpaiix=\sum\limits_{i=1}^kp_i^{a_i} 则约数个数为∏i=1k(ai+1)\prod\limits_{i=1}^k(a_i+1) 因此我们不难发现我们一定有a1>=a2>=...>=aka_1>=a_2>=...>=a_k 而且我们发现前10个质数的乘积就原创 2018-04-10 09:15:24 · 289 阅读 · 1 评论 -
uva8455 Twice Equation(pell方程+高精度)
题目好神啊orz 给sbw巨佬跪烂 求n(n+1)=2m(m+1)n(n+1)=2m(m+1),使得有正整数解m的最小的n,要求n>=l。 我们化一下这个等式: 4n2+4n+2=8m2+8m+24n^2+4n+2=8m^2+8m+2 (2n+1)2+1=2(2m+1)2(2n+1)^2+1=2(2m+1)^2 设x=2n+1,y=2m+1x=2n+1,y=2m+1 x2−2y2=−1原创 2018-04-02 16:34:43 · 522 阅读 · 0 评论 -
bzoj3629 [JLOI2014]聪明的燕姿(数论+dfs)
首先我们有约数和公式: 若x=∏i=1npqiix=\prod\limits_{i=1}^np_i^{q_i} 则x的约数和d(x)=∏i=1n∑j=0qipjid(x)=\prod\limits_{i=1}^n\sum\limits_{j=0}^{q_i}p_i^j 于是我们可以枚举质因子pi,爆搜答案。要注意优秀的剪枝技巧qaq原创 2018-03-17 18:12:31 · 372 阅读 · 0 评论 -
CF2B The least round way(dp+数论)
给你一个n*n的方阵,每个位置有一个非负数,让你选择一条从左上角走到右下角的路径,使得这条路径上的数的乘积的后缀0最少。乘积后缀0的个数就是min(因子2的个数,因子5的个数)。因此我们dp求一下使2最少的情况下的答案和使5最少的情况下的答案。取最小的即可。注意要输出路径。复杂度O(n2)O(n^2)还要注意处理一下有0的情况,那么答案显然可以选择过0的一条路径,使得后缀0的个数为1.如果有更优的路原创 2018-03-11 16:36:42 · 399 阅读 · 0 评论 -
CF225E Unsolvable(数论)
z需要满足的条件就是z=2t−1z=2^t-1,且t+1t+1是梅森素数。 梅森素数就是满足2p−12^p-1为素数的素数p。原创 2018-03-10 23:35:12 · 511 阅读 · 0 评论 -
CF225B Well-known Numbers(数学+贪心)
怎么感觉自己啥题都想不出来了呢orz 我们只需要处理出<=1e9的每一项,我们发现对于k>=31,就是只有30项,1…2^29,因为2^30>1e9.对于k<31,我们可以直接求一下每一项,打表发现最多43个不同的数字(不算0)。然后贪心的每次减掉能减掉的最大的序列中的数即可。 至于为啥,脑补一下,我们发现2fi>=fi+12fi>=fi+12f_i>=f_...原创 2018-03-10 22:46:14 · 272 阅读 · 1 评论 -
CF55D Beautiful numbers(dp+离散化+数论)
要求整除每一位上的数,就是要mod lcm(a1,a2,…an)余0 M=lcm(1,2,…,9)=2520 因为a%(nx)≡amodxa \%(nx)\equiv a \mod x 所以我们只关心x%2520的余数即可。 我们有dp[i][j][x]表示前面的数的各位的lcm为j,前面的数%2520余x,还剩的i位有多少种合法填法。 然后因为这样还是太慢,我们把j离散化掉,最多只有48原创 2018-03-10 13:11:29 · 276 阅读 · 0 评论 -
CF603B Moodular Arithmetic(数论+快速幂)
首先k=0时,答案就是pp−1p^{p-1}k=1时,答案就是ppp^pk>=2时答案就是pp−1mp^{\frac{p-1}{m}},其中m为k mod p意义下的order。根据费马小定理,我们有kp−1≡1mod pk^{p-1}\equiv1\mod\ p ,所以m一定是p-1的因数,也可以O(p√)O(\sqrt p)的枚举p-1的因数来算。原创 2018-03-09 22:51:16 · 394 阅读 · 0 评论 -
CF396A On Number of Decompositions into Multipliers(数论+组合数学)
将m分解质因数, m=∏ti=1pkiim=\prod_{i=1}^t p_i^{k_i} 则ans=∏ti=1C(n+ki−1,n−1)ans=\prod_{i=1}^t C(n+k_i-1,n-1),相当于对于每一个pip_i,我要把kik_i分配到n个位置上去,可以为0,问方案数。#include <cstdio>#include <cstring>#include <algorith原创 2018-03-06 22:28:25 · 327 阅读 · 0 评论 -
Codeforces Round #447
CF894A QAQ(暴力枚举/前缀后缀)CF849B Ralph And His Magic Field(数论,组合数学,快速幂)CF849C Marco and GCD Sequence(数论+构造)原创 2017-11-20 22:07:07 · 280 阅读 · 0 评论 -
bzoj2956 模积和(数论分块)
用所有的减去i,j相同的,分三部分分块计算即可。 复杂度O(n−−√+m−−√)O(n+m)O(\sqrt n+\sqrt m)#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 100010#define mod 19940417...原创 2018-05-24 17:29:31 · 239 阅读 · 0 评论