组合数

子序列

#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;

}
基础数论 文章被收录于专栏

基础数论学习

全部评论

相关推荐

01-16 18:48
四川大学 Java
KalznAsawind:人问他哪一个是pdd,他倒介绍起来了。。。
点赞 评论 收藏
分享
02-03 12:20
门头沟学院 Java
一天代码十万三:你这个简历东西太杂了,根本看不出你想投什么岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务