{ "Math_QuickPow": { "prefix": "Math_QuickPow", "body": [ "", "ll quick_Pow(ll a, ll b, ll mod) {", " // a的b次方模mod", " ll res = 1, t = a;", " while (b) {", " if (b & 1) res = (res * t) % mod;", " t = t * t % mod;", " b >>= 1;", " }", " return res;", "}", "", ], }, "Math_Fm": { "prefix": "Math_Fm", "body": [ "", "ll quick_Pow(ll a, ll b, ll mod) {", " // a的b次方模mod", " ll res = 1, t = a;", " while (b) {", " if (b & 1) res = (res * t) % mod;", " t = t * t % mod;", " b >>= 1;", " }", " return res;", "}", "", "ll Fm(ll a, ll mod) {", " //费马小定理求逆元", " return quick_Pow(a, mod - 2, mod);", "}", "", ], }, "Math_C": { "prefix": "Math_C", "body": [ "", "ll quick_Pow(ll a, ll b, ll mod) {", " // a的b次方模mod", " ll res = 1, t = a;", " while (b) {", " if (b & 1) res = (res * t) % mod;", " t = t * t % mod;", " b >>= 1;", " }", " return res;", "}", "", "ll Fm(ll a, ll mod) {", " //费马小定理求逆元", " return quick_Pow(a, mod - 2, mod);", "}", "", "ll C(ll n, ll m, ll mod) {", " ll fz = 1, fm = 1;", " for (ll i = n; i >= n - m + 1; i--) fz = fz * i % mod;", " for (ll i = 1; i <= m; i++) fm = fm * i % mod;", " return (fz * Fm(fm, mod)) % mod;", "}", "", ], }, "Class_Math_Bignum": { "prefix": "Class_Math_Bignum", "body": [ "", "class Math_Bignum {", " public:", " string Bignum;", "", " vll num;", "", " Math_Bignum(string s) {", " Bignum = s;", " for (auto i : s) num.push_back(i - '0');", " }", "", " Math_Bignum(vll v) {", " string s;", " num = v;", " for (auto i : v) s.push_back(i + '0');", " }", "", " Math_Bignum(ll l) {", " string s;", " while (l) s.push_back(l % 10 + '0'), num.push_back(l % 10), l /= 10;", " reverse(num.begin(), num.end());", " reverse(s.begin(), s.end());", " Bignum = s;", " }", "", " ll get(ll l, ll r) {", " ll res = 0;", " for (int i = l - 1; i <= r - 1; i++) res = res * 10 + num[i];", " return res;", " }", "};", "", ], }, }