组合数
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const ll mod = 1e9 + 7; const ll N = 1e5 + 7; const ll maxn = 1e5 + 7, maxm = 2e5 + 7; inline ll read() { ll s = 0, w = 1; char ch = getchar(); while (ch < 48 || ch > 57) { if (ch == '-') w = -1; ch = getchar(); } while (ch >= 48 && ch <= 57) s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar(); return s * w; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1) (ans *= a) %= mod; b >>= 1; (a *= a) %= mod; } return ans % mod; } ll fac[N],ifac[N]; void init(const int n) { fac[0] = ifac[0] = 1; for (int i = 1; i <= n; i++) { fac[i] = fac[i - 1] * i % mod; } for (int i = 1; i <= n; i++) { ifac[i] = qpow(fac[i], mod - 2, mod); } } ll C(int n, int m) { if (n == 0 || m == 0 || n == m) return 1; ll up = fac[n]; ll down = ifac[m] * ifac[n - m] % mod; return up * down % mod; } int main() { init(N); string t; ll n; cin >> t >> n; ll m = t.length(); ll ans = 0; for(int i = m; i <= n ; i++){ ans += C(n , i) * qpow(25 , n-i, mod); ans %= mod; } cout<<ans<<endl; }
基础数论 文章被收录于专栏
基础数论学习