随笔分类 -  数论

摘要:[题目]https://ac.nowcoder.com/acm/contest/7501/A 题意:选出最多数量的数,这组数两两是倍数关系。 解法:1、很容易想到用dp[i]去更新i的倍数,但是会TLE,可以稍作优化,只需更新i的素数倍。比如4,如果只更新素数倍暂时就不会更新到4,而是通过22的方式 阅读全文
posted @ 2020-10-25 20:37 无名菜鸟1 阅读(283) 评论(0) 推荐(1)
摘要:题目 求,mod1e9+9. 解法:首先要知道通项公式且能将其转化为mod意义下整数(解二次同余方程)。 将每一项展开,观察到纵向为一个n+1项的等比数列,等比数列求和可以有优化掉些快速幂, #include<bits/stdc++.h> typedef long long ll ; #define 阅读全文
posted @ 2020-07-22 16:34 无名菜鸟1 阅读(270) 评论(0) 推荐(0)
摘要:题目 题意:在一自东向西首尾相连长为L单位的坐标轴上有两只青蛙分别位于X,Y,它们跳一次分别为m,n个单位,问能否相遇,能输出需要跳几次。否输出impossible。 解法: int X , Y , m , n , L , x , y , d; void ex_gcd(int a , int b , 阅读全文
posted @ 2020-06-16 11:08 无名菜鸟1 阅读(148) 评论(0) 推荐(0)
摘要:##判断素数 最简单的判断就是根据素数的定义:只有两个因子1和本身(1不是素数)。时间复杂度O(n) bool is_prime(int x){ if(x == 1) return false; rep(i , 2 , n-1){ if(x % i == 0){ return false; } } 阅读全文
posted @ 2020-06-04 18:37 无名菜鸟1 阅读(491) 评论(0) 推荐(0)
摘要:整除 同余 模运算与取余 欧几里得 扩展欧几里得 逆元 中国剩余定理 素数筛 欧拉函数 #基础数论 ##整除 ###一、概念 若整数a除以非零整数b,商为整数,且余数为零,我们就说b能整除a,即b|a,读作"b整除a"或"a除以b"。 可以理解为b是a的因子,a是b的倍数。 ###二、性质 $1.传 阅读全文
posted @ 2020-04-20 19:59 无名菜鸟1 阅读(502) 评论(0) 推荐(0)
摘要:https://www.51nod.com/Challenge/Problem.html#problemId=2489 题意: 小b有n个关闭的灯泡,编号为1...n。 小b会进行n轮操作,第i轮她会将编号为i的倍数的灯泡的开关状态取反,即开变成关,关变成开。 求n轮操作后,有多少灯泡是亮着的。 解 阅读全文
posted @ 2020-03-07 01:32 无名菜鸟1 阅读(297) 评论(0) 推荐(0)
摘要:1、原根的定义: 原根,是一个数学符号。设m是正整数,a是整数,若a模m的阶等于φ(m)(m的欧拉函数),则称a为模m的一个原根。 阶:a和模m互质,使ad ≡1(mod m)成立的最小正整数d称为a对模m的阶。例如:22≡1(mod3),2对模3的阶为2。 假设一个数g对于P来说是原根,那么gi 阅读全文
posted @ 2020-03-06 23:17 无名菜鸟1 阅读(3841) 评论(0) 推荐(0)
摘要:RhoPollard Rho是一个著名的大数质因数分解算法,它的实现基于一个神奇的算法:MillerRabinMillerRabin素数测试。 Pollard_rho算法的大致流程是 先判断当前数是否是素数(Miller_rabin)了,如果是则直接返回。如果不是素数的话,试图找到当前数的一个因子( 阅读全文
posted @ 2020-03-06 22:03 无名菜鸟1 阅读(1916) 评论(0) 推荐(0)
摘要:【作用】 一般素数判定方法有试除法和Miller-Rabin。试除法枚举2-√n,时间复杂度为O(√n) , 一旦n特别大,就不适合用试除法进行判定。 这时候我们可以对其进行 Miller-Rabin 素数测试,可以大概率测出其是否为素数。 【两个基础理论】 (1):费马小定理:当p为质数时,有ap 阅读全文
posted @ 2020-03-06 21:53 无名菜鸟1 阅读(1183) 评论(0) 推荐(0)
摘要:https://codeforces.com/contest/1316/problem/C 题意:给出两个多项式相乘得到h(x),问该多项式得哪一项不能被素数p整除。 解法:假设a多项式第一个不能被p整除为ai , b多项式第一个不能被p整除为bj ci+j = (a0 * bi+j + a1* b 阅读全文
posted @ 2020-03-05 15:46 无名菜鸟1 阅读(257) 评论(0) 推荐(0)
摘要:题意:给出n个数(1<=ai<=1012),可以对这组数进行两种操作加一或减一。问最少要几次操作可以使这组数得gcd>1。 解法:我们先假设我们已经知道了素因子是什么,假设其为p,所以有一个很明显的贪心策略,就是每一个数只会变成与它相邻的两个是p的倍数的正整数,所以我们就可以得到一个O(n)的贪心策 阅读全文
posted @ 2020-03-05 02:02 无名菜鸟1 阅读(256) 评论(0) 推荐(0)
摘要:https://ac.nowcoder.com/acm/contest/3005/C 题意:求长度为k的连续子段乘积。 解法1逆元:前缀乘积(不含0),记录前缀0的个数,并求不含0的长度为k的连续子段乘积中取最大的。 注意0没有逆元,所以在考虑递推方法时0要特殊处理。 #include <bits/ 阅读全文
posted @ 2020-02-12 00:12 无名菜鸟1 阅读(256) 评论(0) 推荐(0)
摘要:https://nanti.jisuanke.com/t/41299 题意:给出a , b , m . 求a的a次方b次取模后的值。 解法:拓展欧拉降幂,递归求解。 //#include <bits/stdc++.h> #include <cstdio> #include <cstring> #in 阅读全文
posted @ 2020-01-26 19:02 无名菜鸟1 阅读(160) 评论(0) 推荐(0)
摘要:题意:https://www.lydsy.com/JudgeOnline/problem.php?id=3884 解法:反复使用扩展欧拉定理,递归求解。 https://www.cnblogs.com/812-xiao-wen/p/10500135.html https://www.cnblogs. 阅读全文
posted @ 2020-01-17 14:01 无名菜鸟1 阅读(186) 评论(0) 推荐(0)
摘要:https://atcoder.jp/contests/abc151/tasks/abc151_e 题意:给你n个数,从中任意选出k个数作为一组,求出任意组合的最大值-最小值之和。 解法:排序,前缀和和后缀和,组合规律。 #include<stdio.h> #include<string.h> #i 阅读全文
posted @ 2020-01-14 00:45 无名菜鸟1 阅读(242) 评论(0) 推荐(0)
摘要:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827369176 题意:有一数轴 , 问从A点到B点最少需要几步。可以有6中方式行走,左右a , b a+b. 解法:设走了x步a , y步b。有方程 ax + by = B-A , 阅读全文
posted @ 2020-01-09 15:11 无名菜鸟1 阅读(167) 评论(0) 推荐(0)
摘要:什么是欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,特殊的 φ(1) = 1. 如何计算欧拉函数 其中p1,p2,.....pn为x的所有质因数,x是正整数。 欧拉函数的几个性质 1、对于质数p φ(p)=p-1. 2、若p为质数,n = pk,则 φ(n) = pk - pk-1 3、欧拉 阅读全文
posted @ 2020-01-08 21:09 无名菜鸟1 阅读(1188) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5207 题意:给你一组数n,求出这组数中的最大的一组最大公约数 解法:统计这n个数的因子数 , 枚举每一个数为因子的因子个数,反向输出因子个数大于2的因子即为答案。 #include <bits/stdc++.h> 阅读全文
posted @ 2020-01-06 15:14 无名菜鸟1 阅读(186) 评论(0) 推荐(0)
摘要:题意:Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. n (n ≤ 30), k (k ≤ 109) and m (m < 104) 输出结果矩阵 解法: 若 n是偶数 S 阅读全文
posted @ 2020-01-05 00:10 无名菜鸟1 阅读(217) 评论(0) 推荐(0)
摘要:http://oj.jxust.edu.cn/contest/Problem?id=1702&pid=4 题意:给你一个数n,分成几个数之和使这些数乘积最大x。 求(1/n) %x. 解法:要使乘积最大尽可能多的分出3 , 三种情况, 1、n%3 == 0 ,全分成3的乘积。 2、n%3 == 1 阅读全文
posted @ 2019-11-24 22:52 无名菜鸟1 阅读(153) 评论(0) 推荐(0)