
数学
单木
无脑程序猿
展开
-
hdu 5144 Frogs 数论
这题的思路还是比较神奇的。 虽然ai的取值范围比较大但与m取gcd之后取值范围就缩小到m的因子范围内。 然后在把0到m-1的数,按与m的最大公约数分类 如果存在ai(与m取最大公约数之后的ai),ai|ba_i|b,则与m的公约数是b的数都能取到。#include <bits/stdc++.h>#define pi acos(-1)#define pb push_back#define原创 2017-07-16 15:14:58 · 287 阅读 · 0 评论 -
取模大作战
给定一个n,∑ni=1n%i=n2−∑ni=1i∗⌊ni⌋\sum_{i=1}^n n\%i=n^2-\sum_{i=1}^n i*\left\lfloor\frac ni\right\rfloor由于⌊ni⌋\left\lfloor\frac ni\right\rfloor在一定范围内是保持不变的,所以我们接下来可以把时间复杂度降到n‾√\sqrt n,也可以直接跳 题目:51nod 1125原创 2016-09-21 19:14:19 · 374 阅读 · 0 评论 -
hdu 5901 Count primes(Meisell-Lehmer 统计n(很大)以内的素数个数)
两种方法都不懂,留个纪念吧/* ********************************Author : danmuCreated Time : 2016年09月19日 星期一 17时29分04秒File Name : a.cpp******************************** */#include <algorithm>#inc原创 2016-09-19 18:02:56 · 721 阅读 · 0 评论 -
hdu 5869 Different GCD Subarray Query
思路一开就想到多校第一场(hdu 5726 GCD)到后来一直没进展。 看了题解自己一开始的思路是对的,但后面的处理和本题不太一样。 固定右端点(都行),计算每个点到该端点的gcd(不同的gcd较少,相同的区间可以合并,时间和空间动能降下来)。然后在右端点固定的情况下,用树桩数组统计以每个点为起点的不同区间的不同gcd个数记到该起点中,对于每个询问的区间,求树桩数组对应区间的和,几位答案。代码h原创 2016-09-14 19:31:01 · 307 阅读 · 0 评论 -
费马小定理
题目cf 615D Multipliers原创 2016-09-07 17:49:20 · 293 阅读 · 0 评论 -
51nod 1035 最长的循环节(无限小数的循环节)
定理如果1<=b<a1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/ab/a 的循环节位数恰好等于min(10e≡1(moda))min(10^e \equiv 1(mod a)),e是正整数。如果1<=b<a1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/ab/a 的循环节位数必整除ϕ(a)\phi(a)。代码/* **************************原创 2016-09-07 09:53:13 · 1689 阅读 · 0 评论 -
高斯消元
模板#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#include<math.h>using namespace std;const int MAXN=50;int a[MAXN][MAXN];//增广矩阵int x[MAXN];//解集bool free_x[MAXN];//标记是否是不原创 2016-08-17 09:51:35 · 367 阅读 · 0 评论 -
原根
求模素数P的原根的方法:对P-1素因子分解,即P-1=(P1^a1)(P2^a2)…..(Pk^ak)。,若恒有这里写图片描述成立,那么g就是P的原根(对于合数而言,只需要把p-1换成这里写图片描述即可)原创 2016-08-11 20:33:49 · 401 阅读 · 0 评论 -
PollardRho大整数分解
相关题目poj2429#include <iostream> #include <stdlib.h> #include <string.h> #include <algorithm> #include <stdio.h> const int Times = 10; const int N = 5500; using namespace std; typedef long原创 2016-08-10 09:44:34 · 375 阅读 · 0 评论 -
中国剩余定理
int CRT(int a[],int m[],int n) { int M = 1; int ans = 0; for(int i=1; i<=n; i++) M *= m[i]; for(int i=1; i<=n; i++) { int x, y; int Mi = M原创 2016-08-10 09:26:01 · 237 阅读 · 0 评论 -
关于素数的题型
寻找大范围内的素数 二次筛法 poj2689原创 2016-08-08 10:36:35 · 350 阅读 · 0 评论 -
求积分
相关题目uvalive 20342.原创 2016-08-08 09:01:14 · 313 阅读 · 0 评论 -
关于最大公约数与最小公倍数的几种题型
1.原创 2016-08-07 20:00:40 · 913 阅读 · 5 评论 -
数论常用小知识总结
定理:设a>1a>1,m,n>0m,n>0,那么有gcd(am−1,an−1)=agcd(m,n)−1gcd(a^m-1,a^n-1)=a^{gcd(m,n)}-1。 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2685定理:设a>ba>b,gcd(a,b)=1gcd(a,b)=1,那么gcd(am−bm,an−bn)=agcd(m,n)−bgcd原创 2016-08-07 19:58:35 · 588 阅读 · 5 评论 -
素数定理
记π(n)\pi(n)为小于等于的素数个数,那么有limn→∞π(n)n/ln(n)=1\lim_{n\rightarrow\infty}\frac{\pi(n)}{n/\ln(n)}=1 。相关题目nefu 117原创 2016-08-07 19:40:12 · 1021 阅读 · 2 评论 -
矩阵操作模板
struct Mat{ int ma[35][35]; Mat unit(int n){ Mat res; memset(res.ma,0,sizeof res.ma); for(int i=0;i<n;++i) res.ma[i][i]=1; return res; }原创 2016-08-06 11:02:07 · 335 阅读 · 0 评论 -
poj 3233 Matrix Power Series 二分求和式
代码#include<cstdio>#include<cstdlib>#include<cstring>struct Mat{ int ma[35][35]; Mat unit(int n){ Mat res; memset(res.ma,0,sizeof res.ma); for(int i=0;i<n;++i)原创 2016-08-06 10:59:58 · 242 阅读 · 0 评论 -
hdu 5793 A Boring Question 数学
思路∑0≤k1,k2,k3,⋯km≤n∏1≤j<mC(kj+1,kj)\sum_{0\leq k_1,k_2,k_3,\cdots k_m\leq n}\prod _{1\leq j<m}C(k_{j+1},k_j) =∑km=0nC(n,km)∑km−1=0kmC(km,km−1)⋯∑k1=0k2C(k2,k1)=\sum_{k_m=0}^nC(n,k_m)\sum_{k_{m-1}=0}^{k原创 2016-08-05 10:43:02 · 279 阅读 · 0 评论 -
hdu 5786 Interval 区间gcd求和
#include <bits/stdc++.h>using namespace std;const int N = 80000+5;const int MOD = 1e9+7;int m;vector<int> vt[N], com[N];vector<pair<int,int> > prefix[N], suffix[N];bool mark[N];int g[N], pre_cnt[N原创 2016-08-03 11:00:54 · 1246 阅读 · 0 评论 -
hdu 5780 GCD 欧拉函数
思路求连续范围内的最大公约数的和,为了降低时间复杂度,都是枚举最大公约数求和。/* ********************************Author : danmuCreated Time : 2016年08月01日 星期一 06时28分29秒File Name : hdu5780.cpp*************************原创 2016-08-01 10:39:45 · 334 阅读 · 0 评论 -
hdu 5778 abs
#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>#define LL long longusing namespace std;bool devide(LL x){ for(LL i=2;i*i<=x;++i){ if(x%i==0){ x/=i;原创 2016-07-31 17:29:40 · 338 阅读 · 0 评论 -
hdu 1568 Fibonacci
代码#include<cstdio>#include<cstdlib>#include<cmath>const double constant_a = (1 + sqrt(5)) / 2;const double constant_b = (1 - sqrt(5)) / 2;const double constant_c = sqrt(5) / 5;int main(){ int原创 2016-07-29 17:59:03 · 244 阅读 · 0 评论 -
hdu 2814 Interesting Fibonacci
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2814题意给出a,b,n,c,求F(ab)F(ab)n−1%cF(a^{b})^{F(a^b)^{n-1}}\%c,F(x)表示斐波那契函数。思路先利用ab%p=aφ(p)+b%φ(p)a^{b}\%p = a^{\varphi (p) + b\%\varphi (p)}降幂,再用找斐波那契模一个数有循环节原创 2016-07-29 16:45:32 · 310 阅读 · 0 评论 -
2016多校4 hdu 5768 Lucky7 数论+容斥原理
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5768题意在给定范围内能够整除7并且不满足模pi等于ri的数的个数。思路代码#include<cstdio>#include<cstdlib>#define LL long longLL p[20],r[20];int n;LL sum;LL powMod(LL a,int b,int mod)原创 2016-07-28 21:35:52 · 523 阅读 · 0 评论 -
hdu 5750 Dertouzos
代码#include<cstdio>#include<cstdlib>#include<algorithm>#define LL long longusing namespace std;bool isprime[100010];int prime[100010],cnt;void init(){ memset(isprime,1,sizeof isprime); is原创 2016-07-24 10:53:35 · 307 阅读 · 0 评论 -
阶乘的长度
给定一个数n,log(n)+1log(n)+1就是n的阶乘的长度。 1. 对于小数据lenn!=logn!10+1=log110+log210⋯logn10+1len_{n!}=log_{10}^{n!}+1=log_{10}^1+log_{10}^2\cdots log_{10}^n+1 2. 对于大数据,用斯特林公式近似n!≈2πn−−−√(ne)nn!\approx \sqrt{2\pi原创 2016-06-14 16:09:39 · 336 阅读 · 0 评论 -
逆序对
一个序列的逆序数的最大值是n×(n−1)/2n\times(n-1)/2。原创 2016-06-07 17:28:14 · 358 阅读 · 0 评论 -
同余问题
性质: 当d与m互质时,同余方程满足消元性质。原创 2016-05-08 21:35:08 · 528 阅读 · 0 评论 -
模线性方程
LL solve(){ for(i=1;i<n;++i){ LL d,x,y; exgcd(m,ttm[i],d,x,y); if((tr[i]-r)%d) return -1; x*=(tr[i]-r)/d; x=x%(ttm[i]/d); r+=x*m; m=m/d*ttm[i原创 2016-05-08 21:06:45 · 230 阅读 · 0 评论 -
欧拉函数
void eular(){ for(int i=1;i<=MAX;++i) phi[i]=i; for(int i=2;i<=MAX;i+=2) phi[i]/=2; for(int i=3;i<=MAX;i+=2) if(phi[i]==i) for(int j=i;j<=MAX;j+=i) phi[j原创 2016-05-07 17:53:48 · 677 阅读 · 0 评论 -
(8^111+9^111)除以17^2余数是多少?
小学奥数,知乎上看到的。 原式为:(8111−9111)%172(8^{111}-9^{111})\%17^2 =>(8111+(17−8)111)%172(8^{111}+(17-8)^{111})\%17^2 二项式展开 =>(8111+∑111i=0×17111−i×(−8)i)%172(8^{111}+\sum^{111}_{i=0}\times17^{111-i}\times(-8原创 2016-05-06 15:18:23 · 619 阅读 · 0 评论 -
辛普森公式
Simpson公式是一个数值积分公式,在计算一些多项式函数(三次或三次一下)的定积分时会得出精确值。但容易验证它对于)(xf=4x通常是不准确的。 ∫baf(x)dx=b−a6(f(a)+4f(a+b2)+f(b)) \int^b_af(x)dx=\frac{b-a}6(f(a)+4f(\frac{a+b}2)+f(b))原创 2016-05-06 10:43:58 · 1707 阅读 · 0 评论 -
斐波那契数列
参见《具体数学第2版》244页。原谅我这个可耻的链接————————会整理一下在发出来相关性质:∑ni=0f(i)=f(n)∗f(n−1)\sum_{i=0}^nf(i)=f(n)*f(n-1);原创 2016-04-29 21:22:49 · 448 阅读 · 0 评论 -
异或
不同为1,相同为零。 总结一些常用的性质吧,随时更新。 1. sis_i xor sjs_j = ai+1a_{i+1} xor…xor aja_j,s是a的前缀和。原创 2016-04-29 19:31:01 · 245 阅读 · 0 评论 -
卢卡斯定理
Lucas定理:我们令n=sp+q , m=tp+r .(q ,r ≤p)那么:int Lucas (ll n , ll m , int p) { return m == 0 ? 1 : 1ll*comb (n%p , m%p , p) * Lucas (n/p , m/p , p) % p ;}//comb()函数中,因为q , r < p , 所以原创 2016-04-25 09:43:47 · 1251 阅读 · 0 评论 -
浙江省赛e题Modulo Query
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3940题目大意:对于0到m区间的数模Ai,模A2...模An,later有q个询问,问前面的问题等于yi的数有多少个(1<=i<=q)最后在按照题意求一下最终结果。解题思路:做的时候最关键的部分没有想明白,没有找到好的处理方法,还是经验少吧,题解...原创 2016-04-25 09:34:45 · 613 阅读 · 0 评论 -
逆元
1.线性求所言逆元LL inv[MAX];inv[1]=1;for(int i=2;i<=MAX;++i) inv[i]=(mod-mod/i)*inv[mod%i]%mod;原创 2016-04-24 21:45:33 · 263 阅读 · 0 评论 -
素数
6N+1法int prime[MAX],cnt;bool isPrime(int k){ if(k==2) return true; if(!(k&1)) return false; for(int i=3;i*i<=k;i+=2) if(k%i==0) return false; retur原创 2016-04-21 16:56:18 · 292 阅读 · 0 评论 -
莫比乌斯反演
定理:F(n)和f(n)是定义在非负整数集合上的两个函数,并且满足条件F(n)=∑d|nf(d)F(n)=\sum_{d|n}f(d),那么我们得到结论f(n)=∑d|nμ(d)F(n/d)f(n)=\sum_{d|n}\mu(d)F(n/d)。 在上面的公式中有一个函数μ(d)\mu(d),它的定义如下: (1)若d=1,那么μ(d)=1\mu(d)=1. (2)若d=p1p转载 2016-04-19 17:27:21 · 256 阅读 · 0 评论 -
扩展GCD
a*x+b*y=d,d=gcd(a,b).模板代码:void exgcd(int a,int b,int& d,int& x,int& y){ if(b==0){ d=a; x=1; y=0; } else{ exgcd(b,a%b,d,y,x); y-=a/b*x; }}-----取自小白算法推导及证明:详见算导(第二版)528;具体数学原创 2016-04-07 21:40:43 · 349 阅读 · 0 评论