一元線性同餘方程組:
x=r[ i ](mod a[ i ])
將兩個方程整合成乙個,不斷整
比如x%8=7,x%11=9 整合成x%88= -57(31)
ll solve()
return (r%m+m)%m; //這句能保證回到正整數
}
中國剩餘定理:
與上面條件不同,需要除數陣列m[i]兩兩互質。
ll a[maxn],m[maxn];
ll china(int n, ll* a, ll* m)
}
if(n>1)
ans=ans/n*(n-1);
return ans;
}
//線性篩:同時求尤拉函式和質數表
const int maxn = 10000000;
bool check[maxn + 10];
ll phi[maxn + 10], prime[maxn + 10]; //int陣列容易wa
int tot; // 素數個數
void phi_and_prime_table(int n)
for (int j = 0; j < tot; j++)
check[i * prime[j]] = true;
if (i % prime[j] == 0)
else
phi[i * prime[j]] = phi[i] * (prime[j] - 1);
} }
return ;
}
//普通篩,有時甚至比線性篩快
int n,p,tot;
int phi[n],pri[1000005];
bool mark[n];
void getphi()
for(int j=1;j<=tot;j++)
else phi[i*x]=phi[i]*phi[x];
} }
}//單獨求尤拉函式,較靈活
int p,pr[n];
bool prime[n];
int k=0;
void isprime()
數學模板 逆元
逆元 因為mod不滿足除法,所以我們需要用到逆元來求a b的模數。逆元就相當與 1 b mod p 逆元有兩種求法。第一種就是用擴充套件歐幾里德來求解。我們有同餘方程 ax 1 modp 如果有解,x就算a模p意義下的逆元。可以變成 ax yp 1 用擴充套件歐幾里德來求解。線性篩逆元 其實還有線性...
模板 數學 線性基
includeusing namespace std define ll long long const int mn 60 ll a mn tmp mn bool flag 該線性基能否表示0 嘗試向線性基中插入乙個值 void ins ll x else x a i flag true 判斷該線...
數學筆記2
設u u x v v x 都可導,則 cu cu c是常數 u v u v uv u v u v u v uv v2 1 2不解釋,下面給出3 4的推導過程 乘法法則可擴充套件 根據除法法則 示例2 f x n 根據除法法則 上式結果也可直接根據冪函式求導法則得出,冪函式f x xn的導數 f x ...