随笔分类 - 数论
摘要:此题难点有三:1.是素数且是平方数的和的形式的数有哪些? 费马二平方定理:除了2这个特殊的素数,所有的素数都可以分两类:被4除余1的素数。 第二类则是被4除余3的素数。第一类素数都能表示为两个整数的平方和,第二类都不能。 因此此题可以转化为[L , R ]中有多少数是除以4余3的。 2.数据范围3e
阅读全文
摘要:The following rules define a kind of integer tuple - the Legend Tuple:• (1; k) is always a Legend Tuple, where k is an integer.• if (n; k) is a Legend
阅读全文
摘要:有n件女装,每个女装有魅力指数val,初始指定k,从这个女装开始算然后把这件女装扔了,其得到的分数是 j 的因子个数,然后找下一个女装,若当前女装的val是负数,则逆时针找接下来的第k个,否则顺时针找第k个。 问最终的最大分数是多少。 因子个数由于n<=5e5 ,可以考虑提前筛好因子个数函数。难点在
阅读全文
摘要:发此随笔以警示自己不要乱实现。 枚举因子的时候多加留心,实现能力还是太差了。 ll get_phi(ll n) { ll m = ll(sqrt(n + 0.5)); ll ans = n; for (int i = 2; i <= m; i++) { if (n % i == 0) { ans =
阅读全文
摘要:给定一个素数p ,问是否存在两个数的里方差就是p p<=1e12 经过简单的数学推导,可以很快想到只要 方程 3 * b *b + 3 * b + 1 - p = 0 关于b有解即可。 简单的想法就是二分 但是问题是b*b要爆long long,咋办呢? java呗 import java.math
阅读全文
摘要:第一次使用快速乘,原来是这样的。 注意Put快速输出要改一下类型,(ll),注意快速输出后面要手打换行。 注意熟悉快速幂配合快速乘的模板。 #pragma warning(disable:4996) #include<iostream> #include<algorithm> #include<bi
阅读全文
摘要:BSGS存在的目的是求中x的解,BSGS算法要求A与C互质,且C为质数。 #pragma warning(disable:4996) #include<iostream> #include<algorithm> #include<bitset> #include<tuple> #include<un
阅读全文
摘要:很容易想到考虑每个质因子对全局的贡献。 思路就是考虑一边。 每个质因可能因为前或后已经出现过质因子了难以计算。不妨对每个质因子采用如下策略,每个质因子的管辖范围是当前位置到前一个质因子位置这段区间,以及到最后的区间。可以想到这样的计数方法是不会重复的。 关于实现:枚举质因子的时候注意循环条件,我一开
阅读全文
摘要:随机在[a,b] 选取一个数,随即在[c,d]选取一个数 问 x + y 取模 p 同余 n 的概率 其实就是计数问题。关键在于如何计数可以不重不漏。 麻烦点在于分类讨论。对于这样的区间问题,先简化为0 , x 的区间。 这里用到容斥原理,第一次做这样的题,不是很容易想到。 分类讨论相对来说感觉还算
阅读全文
摘要:关于 k1 k2 互质的问题,可以自己手动证明一下,需要一点数学直觉。 #pragma warning(disable:4996) #include<iostream> #include<algorithm> #include<bitset> #include<tuple> #include<uno
阅读全文
摘要:给定n 问 k ^ k <= n的最大k 注意到n的范围才1e18,考虑枚举k就好了 不用想复杂 import java.math.BigInteger; import java.io.BufferedReader; import java.io.IOException; import java.i
阅读全文
摘要:莫比乌斯反演经典题。 借鉴大佬的推导。 int prime[maxn], prime_tot; int is_prime[maxn]; int mu[maxn]; ll sum[maxn]; void pre_calc(int lim) { mu[1] = 1; for (int i = 2; i
阅读全文
摘要:对于维护a ,c数组有两种方法: 1.对于每个修改,暴力修改c 2.对于每个查询,暴力查找a 第一种方法是for倍数,最坏复杂度可能达到On,第二种则是sqrt(n) 因此普遍情况下选择第二种,但是题给的x是随机的,期望情况下1只要logn,大大节省了时间。 故采用方法1. 考虑到a[x]的变化如何
阅读全文
摘要:问(1+sqrt(2)) ^n 能否分解成 sqrt(m) +sqrt(m-1)的形式 如果可以 输出 m%1e9+7 否则 输出no 打表找规律。 得到 ai = 6 * a[i - 1] - a[i - 2] - 2 就硬找呗?? 然后矩阵快速幂。注意负数取模的细节 值得一提的是,可以证明 #p
阅读全文
摘要:这天,lyk又和gcd杠上了。它拥有一个n个数的数列,它想实现两种操作。1.将ai 改为 bi2:给定一个数i,求所有 gcd(i,j)=1gcd(i,j)=1 时的 aj 的总和。 第一行两个数n,Q(1<=n,Q<=100000)。 接下来一行n个数表示ai(1<=ai<=10^4)。 接下来Q
阅读全文
摘要:在圆上一点S,扔出一个球,这个球经过N次反弹还有可能回到S点。N = 4时,有4种扔法,如图: 恰好经过4次反弹回到起点S(从S到T1,以及反向,共4种)。 给出一个数N,求有多少种不同的扔法,使得球恰好经过N次反弹,回到原点,并且在第N次反弹之前,球从未经过S点。 输入一个数N(1 <= N <=
阅读全文
摘要:一个整数序列S的LCM(最小公倍数)是指最小的正整数X使得它是序列S中所有元素的倍数,那么LCM(S)=X。 例如,LCM(2)=2,LCM(4,6)=12,LCM(1,2,3,4,5)=60。 现在给定一个整数N(1<=N<=1000000),需要找到一个整数M,满足M>N,同时LCM(1,2,3
阅读全文
摘要:1040: 给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 n <= 1e9 ll get_ephi(ll n) { ll m = int(sqrt(n + 0.5)); ll ans =
阅读全文
摘要:求 n % 1 + n %2 + n % 3 .....n % n 。结果取余1e9 + 7 n <= 1e12 显然是用到了整除分块。 这里的for循环可以当作模板 for (ll l = 1, r; l <= n; l = r + 1) { if (n / l != 0) r = min(n /
阅读全文
摘要:此题主要学到了处理循环节的问题。 对于每个生物而言,有可能有无数能到a1,有可能仅1次到a1,也可能一次也到不了a1 对于一次也到不了,直接输出-1 对于仅1次跑到a1,for m次,如果没有就没有了 对于无数次,联立同余方程,可以用EXGCD或者EXCRT求解。 #pragma warning(d
阅读全文

浙公网安备 33010602011771号