diff --git a/.gitignore b/.gitignore index b65d4ef..5b0dbe3 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,5 @@ day4/U287193/chat day4/U461920/fixed day5/hard/hard day5/perfect/perfect +day5/good/good +day5/fair/fair diff --git a/README.md b/README.md index 9333274..88ada7b 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,27 @@ int main(){ ## Day5 ### 需要学习的点 ->区间最值 +#### 区间最值 +#### 弄懂分数取模出现很大的数字是什么鬼、 +1. >费马小定理 +2. >逆元 +```cpp +// a/b%M +ll _ksm(ll a, ll b,ll M){ + ll res = 1; + while(b) { + if(b & 1) + res = res * a % M; + a = a * a % M; + b >>= 1; + } + return res; +} + +ll ksm(ll a,ll b,ll M){ + return a * _ksm(b, M - 2,M) % M; +} +``` # 排序 ## 稳定性 diff --git a/day5/fair/fair.cpp b/day5/fair/fair.cpp new file mode 100644 index 0000000..ade2c41 --- /dev/null +++ b/day5/fair/fair.cpp @@ -0,0 +1,55 @@ +#include +using namespace std; + +#ifdef DEBUG +#define PRINT_VALUE(v){cout<<#v<<" :"<<(v)<>= 1; + } + return res; +} + +ll ksm(ll a,ll b,ll M){ + return a * _ksm(b, M - 2,M) % M; +} + +int n,k,m,times=1,b; + +signed main(){ + cin>>n>>k>>m; + b=k; + /* + x=k+x/b + bx=k*b+x + (b-1)x=k*b + x=(k*b)/(b-1) + */ + PRINT_VALUE(b); + PRINT_VALUE(n); + PRINT_VALUE(b