
数论
文章平均质量分 91
你别教我打游戏
直面困难,重视过程,追求结果,淡忘过去。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
欧拉函数及其性质
文章目录定义计算公式性质欧拉定理费马小定理定义欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。计算公式性质(1)ifgcd(a,b)==1,thenϕ(ab)=ϕ(a)∗ϕ(b)if\quad gcd(a,b)==1,then\quad \phi(ab)=\phi(a)*\phi(b)ifgcd(a,b)==1,thenϕ(a...原创 2020-02-26 13:06:16 · 401 阅读 · 0 评论 -
正约数集合
试除法求数N的正约数集合。时间复杂度 O(√N)。const int maxn = 1e4;int factor[2*maxn];int getFactors(ll n){ int cnt=0; for(int i=1;i*i<=n;i++) { if(n%i==0) { factor[++cnt]=i...原创 2020-02-23 11:48:18 · 896 阅读 · 0 评论 -
素数的筛法+唯一分解定理+欧拉函数
文章目录筛素数表唯一分解定理欧拉函数筛素数表如何快速筛出一个区间(1~n)的素数,是在数论中一个很重要的问题。有两种筛法。埃拉托色尼筛法:O(nlonn),编码简单。欧拉筛法:O(n),编码繁琐。const int maxn=1e6;//欧拉筛法( O(n) )//p[]来存放已得到的素数,np为已得到的素数个数,p从 0 开始int np=0,p[maxn],v[maxn];...原创 2020-02-15 16:16:40 · 383 阅读 · 0 评论 -
大整数取模 最大公约数与最小公倍数 快速幂与慢速乘
文章目录大整数取模最大公约数与最小公倍数快速幂与慢速乘大整数取模Description:输入一个字符串 a 代表一个很大的数,一个32位整数b,问a能否整除b。Large Division LightOJ - 1214亲测 10ms。#include<stdio.h>#include<iostream>#include<cmath>#incl...原创 2020-02-15 13:46:35 · 409 阅读 · 0 评论 -
AcWing 1316. 有趣的数列 (卡特兰数推导)
1316. 有趣的数列卡特兰数求很轻松,关键是如何理解这道题目就是卡特兰数。通过找数字规律的,就算了吧#include<stdio.h>using namespace std;// C(2n,n)-C(2n,n+1)typedef long long ll;const int N = 2e6+10;int primes[N], cnt = 0;bool vis[N];int n, P;int s1[N], s2[N];void getPrimes(){ f原创 2020-09-24 23:27:43 · 213 阅读 · 0 评论 -
AcWing 1315. 网格 (组合数的高精度运算、卡特兰数)
1315. 网格首先利用推导卡特兰的方法,把所有不合法的路径,通过与y=x+1y=x+1y=x+1作对称变换。终点就是(m−1,n+1)(m-1,n+1)(m−1,n+1),所以最终方案数就是C(n+m)−C(n+m,m−1)C(n+m)-C(n+m,m-1)C(n+m)−C(n+m,m−1)组合数的高精度计算步骤:线性筛素数质因数分解(阶乘的质因数分解)高精度乘法高精度减法#include<stdio.h>#include <iostream>using n原创 2020-09-23 19:48:22 · 274 阅读 · 0 评论 -
AcWing 1312. 序列统计 (构造、组合恒等式、卢卡斯定理)
解:L<=a1<=a2<=a3<=……ak<=RL<= a1 <= a2 <= a3 <= …… ak <= RL<=a1<=a2<=a3<=……ak<=R构造一个和它一一对应的序列L<=b1<b2+1<b3+2……<bk+k−1<=R+k−1L<= b1 < b2+1 < b3+2 …… <bk+k-1 <= R+k-1L<=b1<原创 2020-09-20 15:24:14 · 132 阅读 · 0 评论 -
组合数C(m,n)的四种求法
适用类型AW885. 求组合数 I#include <stdio.h>using namespace std;const int mod = 1e9+7, N = 2010;int n,a,b,c[N][N];int main(){ for(int i=0;i<N;i++){ for(int j=0;j<=i;j++){ if(j==0) c[i][0] = 1; else c[i][j] =.原创 2020-09-19 14:07:08 · 2412 阅读 · 2 评论 -
AcWing 1310. 数三角形 (组合数、GCD)
1310. 数三角形关键点就是如何去除共线的三个点。按斜率分类讨论。#include <stdio.h>using namespace std;typedef long long ll;int m,n;ll gcd(ll a,ll b){ return b?gcd(b,a%b):a;}ll C(ll n){ return n*(n-1)*(n-2)/6;}int main(){ scanf("%d%d",&m,&n);原创 2020-09-16 22:35:44 · 175 阅读 · 0 评论 -
AcWing 1309. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)
1309. 车的放置分步做:先放上面的矩形,后考虑下面的矩形。分类做:依次求出,上面放置0、1、2、……、k0、1、2、……、k0、1、2、……、k个车的,而下面放置k、k−1、k−2、……、0k、k-1、k-2、……、0k、k−1、k−2、……、0的方案数,分别累计到答案里。核心:加入上面放iii个、下面就放置k−ik-ik−i个,那么此时方案数为Cbi∗Pai∗Cdk−i∗Pa+c−ik−iC_{b}^{i}*P_{a}^{i}*C_{d}^{k-i}*P_{a+c-i}^{k-i}Cbi∗原创 2020-09-16 14:19:40 · 255 阅读 · 0 评论 -
AcWing 1308. 方程的解 (组合数(“隔板法“、不定方程正整数解的个数)、高精度、快速幂)
1308. 方程的解xx(mod 1000)x^x (\mod 1000)xx(mod1000)可以快速幂求出,不是重点。然后实际上就是求不定方程的正整数解的个数,运用隔板法就可以解决。最终答案Cn−1k−1C_{n-1}^{k-1}Cn−1k−1但是由于不能取模,所以还得要手写高精度。#include <stdio.h>using namespace std;const int N = 150;int k,x,f[1010][110][N];int qm(int a原创 2020-09-14 16:31:33 · 285 阅读 · 0 评论 -
ZOJ-4108Fibonacci in the Pocket——斐波那契+周期性+大整数取模+前缀和
Fibonacci in the Pocket #include<stdio.h>#include<iostream>#include<cmath>#include<math.h>#include<string>#include<string.h>#include<algorithm>#includ...原创 2020-03-16 12:20:35 · 254 阅读 · 0 评论 -
(简单递推)UVA-11040Add bricks in the wall
Add bricks in the wall递推关系很容易得出,主要注意的是图的存储以及访问。将图中的金字塔形,转换成下三角形#include<stdio.h>#include<iostream>#include<cmath>#include<math.h>#include<string>#include<stri...原创 2020-03-01 16:10:56 · 239 阅读 · 0 评论 -
UVA - 294Divisors+唯一分解定理+约数个数的计算公式
DivisorsN=∏i=1mpiciN=\prod_{i=1}^m p_i^{c_i}N=∏i=1mpici,约数的个数为:∏i=1m(ci+1)\prod_{i=1}^m (c_i+1)∏i=1m(ci+1)先打素数表,唯一分解得出cic_ici,计算出约数的个数#include<stdio.h>#include<iostream>#inclu...原创 2020-03-01 15:38:20 · 283 阅读 · 0 评论 -
UVA - 10539Almost Prime Numbers
Almost Prime NumbersDef of Almost Prime Numbers:自身不是素数,但只有一个素数因子,由唯一分解定理可得,这样的数只能是pc(c>=2)p^c(c>=2)pc(c>=2)Solution1:#include<stdio.h>#include<iostream>#include<cmath&g...原创 2020-03-01 14:27:18 · 182 阅读 · 0 评论 -
UVA-11526H(n)对称性+几何意义
H(n)思路:所要求的H(n)的几何意义,就是y=n/xy=n/xy=n/x在区间[1,n]中的整数点,由于整数点的分布具有对称性,考虑[1,√n]的整数点即可。#include<stdio.h>#include<iostream>#include<cmath>#include<math.h>#include<string&g...原创 2020-03-01 13:28:49 · 251 阅读 · 0 评论 -
UVA - 1644Prime Gap素数间隔
Prime Gap欧拉筛法打素数表,同时用ans[]数组记录下两素数的间隔。最终将v[],ans[]都遍历一遍,时间复杂度O(n);核心代码:for(int k=p[np-1]+1;k<p[np];k++){ ans[k]= p[np]-p[np-1];}#include<stdio.h>#include<iostream>#include<...原创 2020-03-01 12:25:50 · 298 阅读 · 0 评论 -
UVA-10214Trees in a Wood+欧拉函数+GCD(更相减损法)
Trees in a Wood#include<stdio.h>#include<iostream>#include<cmath>#include<math.h>#include<string>#include<string.h>#include<algorithm>#include<queu...原创 2020-03-01 01:12:16 · 203 阅读 · 0 评论 -
费马小定理求逆元+约数的和+等比数列求和+取模
Sumdiv求A^B的所有约数的和。将A分解∏i=1m(∑k=0cipik)=(1+p11+……p1c1)∗……∗((1+pm1+……p1cm)\prod_{i=1}^m (\sum_{k=0}^{c_i} p_i^{k})=(1+p_1^{1}+……p_1^{c_1})*……*((1+p_m^{1}+……p_1^{c_m})i=1∏m(k=0∑cipik)=(1+p11+……p1...原创 2020-02-26 21:07:25 · 249 阅读 · 0 评论 -
POJ - 2480+GCD+欧拉函数+积性函数
前置技能;(1)gcd()函数是一个非完全积性函数,ifgcd(a,b)==1,thengcd(n∗(a∗b))=gcd(n,a)∗gcd(n,b)。if gcd(a,b)==1,then gcd(n*(a*b))=gcd(n,a)*gcd(n,b)。ifgcd(a,b)==1,thengcd(n∗(a∗b))=gcd(n,a)∗gcd(n,b)。(2)∑gcd(i, N)也是一个积性函...原创 2020-02-26 13:41:26 · 305 阅读 · 0 评论 -
UVA-12716 GCD+异或运算性质+约数筛法
GCD XORDescription:输入一个整数n,有多少对整数(a,b)满足 1≤b≤a≤n,gcd(a,b)==aXORbgcd(a,b)==a XOR bgcd(a,b)==aXORb思路历程:①暴力循环 时间复杂度O(n^2),毫无疑问会超时。②考虑到(虽然自己一开始不知道)aXORb=c,thenaXORb=c,thenaXORb=c,then,aXORc=baXORc=b...原创 2020-02-25 19:04:48 · 454 阅读 · 0 评论 -
UVA - 11582+取模的周期性
Colossal Fibonacci Numbers!斐波那契数f(i)定义如下:f(0)= 0 and f(1)= 1 and f(i + 2)= f(i+1) f(i),请输出f(a^b)%n。思路:取模下的斐波那契数列是具有周期性的,只要出现两项分别对应数列的前两项,那么后面的数就会这样进行下去。...原创 2020-02-25 18:04:06 · 349 阅读 · 0 评论 -
唯一分解定理入门题 + UVA-10791 + UVA-10375+UVA-10622+CodeForces-1294C+计蒜客 - T2059
Minimum Sum LCM输入整数 n(1≤n≤2^31-1) , 求至少两个正整数,使得它们的公倍数最小为n,且这些整数的和最小。输出最小的和。思路:设 n=p1c1∗p2c2∗p3c3……pmcm{{n=p_1^{c_1}*p_2^{c_2}*p_3^{c_3}……} p_m^{c_m}}n=p1c1∗p2c2∗p3c3……pmcm那么答案就是∑i=1mpici\s...原创 2020-02-24 12:42:27 · 271 阅读 · 2 评论 -
UVA-11440gcd Help Tomisu更相减损法+命题等价转换+递推求m!的欧拉函数
Help TomisuDescription:Given two integers N and M, he aims to count the number of integers x between 2 and N! (factorial N), having the property that all prime factors of x are greater than M.给定两个整...原创 2020-02-23 18:49:21 · 173 阅读 · 0 评论 -
欧拉函数入门题+仪仗队T2539+Send a TableUVA-10820+CodeForces-1295DSame GCDs
仪仗队读懂题意,挑几个点来分析,发现每一列上看到的点应满足 gcd(x,y)=1{{gcd(x,y)=1}}gcd(x,y)=1,而每一列看到的点的个数即为ϕ(n){{\phi(n)}}ϕ(n),再由对称性得出答案。#include<stdio.h>#include<iostream>#include<cmath>#include<math.h&...原创 2020-02-23 14:23:04 · 194 阅读 · 0 评论 -
快速幂、等比数列求和、除法取模+CodeForces-678D
Iterated Linear Function求 g(x)的递推公式,可得g(n)(x)={x+B∗n,A=1An∗x+B∗An−1A−1,A≠1g^{(n)}(x)=\begin{cases}x+B*n,A=1\\A^n*x+B*\frac{A^n-1}{A-1},A\ne1\end{cases}g(n)(x)={x+B∗n,A=1An∗x+B∗A−1An−1,A=1#in...原创 2020-02-23 13:31:55 · 300 阅读 · 0 评论 -
大区间中的素数Prime Distance POJ - 2689
Prime Distance 思路:模拟埃式筛法筛去L~R区间中的素数。因为,L,R都是很大的数,没有任何筛法能在规定时间内筛得这个区间中的素数。任意一个为N的合数,必有一个小于等于√N,的素数因子。所以,我们只需要筛得 [1,√R]中的所有素数,然后用这些素数因子,去标记[L,R]中的合数(就类似于埃式筛法)。注意点:①R=2^31-1,中间变量很有可能超int范围,所以最好开lo...原创 2020-02-21 19:44:18 · 173 阅读 · 0 评论