组合数
#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;
}
基础数论 文章被收录于专栏
基础数论学习
