素數篩
n,q<=1e6
如果暴力求素數 根號n=1000 1e9超時
nlogn預處理素數 o(1*q)
#include
using
namespace std;
typedef
long
long ll;
typedef pair pll;
#define mp make_pair
#define pb push_back
#define fi first
#define se second
const
int maxn=
1e6+5;
ll q,a[maxn]
,f,ans,k,n;
string s,t;
bool prime[maxn]
;void
init()
}}intmain()
return0;
}
c(n,2)+…+c(n,n) n<=1e6 快速冪求組合數 =2^n-(n+1) logn
唯一分解定理
#include
using
namespace std;
typedef
long
long ll;
typedef pair pll;
const
int maxn=
1e6+5;
#define mp make_pair
#define pb push_back
#define fi first
#define se second
ll q,a[maxn]
,f,ans,k,n,cnt,c,maxx;
string s,t;
bool prime[maxn]
;//1e14 素因子 17280個 求 n=a*b^p 的最大p 2e5*log1e14=2e5*50=1e7
intmain()
a[c++
]=cnt;}}
if(n!=1)
for(
int i=
0;i) cout
}
逆元問題
n/m %mod =q
n*k%mod=q
/m *k有相同的結果 k為m的逆元
#include
using
namespace std;
typedef
long
long ll;
typedef pair pll;
const
int maxn=
1e6+5;
const ll mod=
1e9+7;
#define mp make_pair
#define pb push_back
#define fi first
#define se second
ll q,k,n,a[maxn]
,f,ans,cnt,maxx;
string s,t;
bool prime[maxn]
;ll quick_pow
(ll a,ll n)
a=a*a%mod;
n>>=1;
}return res;
}ll inv_mod
(ll a,ll p)
intmain()
算術基本定理(唯一分解定理 分解素因子)
include include include include include include include include includeusing namespace std int main printf d a 0 for int i 1 i cnt i printf n return 0...
唯一分解定理
任意乙個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,乙個數能被唯一地分解成質因數的乘積。因此這個定理又叫做唯一分解定理。c include include include using namespace std int main int num 32 int local...
唯一分解定理
唯一分解定律 又稱為正整數的唯一分解定理,即 每個大於1的自然數均可寫為質數的積,而且這些素因子按大小排列之後,寫法僅有一種方式。當題目有大數相除,求餘數時,精度要求高時.就要運用唯一分解定律 以下唯一分解定律證明 為了真正地證明,分解質因數的方法是唯一的,我們將再次用到反證法。假設存在某些數,它們...