题目描述:

给定一个小写字符串T

求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)

输入描述:

第一行一个字符串T

第二行一个正整数m

输入:

a    2

输出:

51

备注:

思路:

(图比较丑,不理解的地方可以留言hhhh)

T: 原串  S: 构造串

1.枚举原串 T 结尾的位置:


 2.举例:

3.枚举i的位置:

4.做题思路

1.从结尾开始枚举 T 结束字符的位置最多有 m - n + 1;
2.当前位置为 T 串结尾字符,并且为了避免重复,在当前位置的前面可以随意填写的位置,不能填 和T结尾字符一样的字符,故每个位置有25个字符可以选
3.在当前T结尾位置的后面i - 1个位置,可以随意填写字符,每个位置有26中填写方法;
4.题目变为:从前m - i个位置当中选n - 1个位置,乘上前 m - i - (n - 1)个能选25个字符的,乘上i - 1个能选26个字符的;组合数

//注释是做题时候思路(可以不看),建议看上面的图:
//1.从结尾开始枚举 T 结束字符的位置最多有 m - n + 1;
//2.当前位置为 T 串结尾字符,并且为了避免重复,在当前位置的前面可以随意填写的位置,不能填 和T结尾字符一样的字符,故每个位置有25个字符可以选
//3.在当前T结尾位置的后面i - 1个位置,可以随意填写字符,每个位置有26中填写方法;
//4.题目变为:从前m - i个位置当中选n - 1个位置,乘上前 m - i - (n - 1)个能选25个字符的,乘上i - 1个能选26个字符的;组合数#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10, mod = 1e9 + 7;
int fac[N], infac[N];
//快速幂
int qmi(int a, int b)
{int res = 1;while(b){if(b & 1)res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
//逆元、阶乘初始化
void init()
{fac[0] = fac[1] = 1;for(int i = 1; i <= N; i++){fac[i] = i * fac[i - 1] % mod;infac[i] = qmi(fac[i], mod - 2);}
}//组合数
int C(int n, int m)
{return (fac[n] % mod) * (qmi(fac[m] * fac[n - m] % mod, mod - 2)) % mod;
}void solve()
{init();string str;int n, m;cin >> str >> m;n = str.size();int ans = 0;//方案数累加for(int i = 1 ; i <= m - n + 1; i++){ans += C(m - i, n - 1) * qmi(25, m - i - n + 1) % mod * qmi(26, i - 1) % mod;ans %= mod;}cout << ans << endl;
}signed main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T = 1;
//     cin >> T;while(T --)solve();return 0;
}

(他不让我发,咩办法,加点字数)

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

/*求一共有多少长度为m的小写字符串 S 满足,T是S的一个子序列(不需要连续)*/

NC14599 子序列(组合数学、思维)相关推荐

  1. CodeForces - 1284C New Year and Permutation(组合数学+思维)

    题目链接:点击查看 题目大意:首先定义名词"排列"的意思是,一段数列中的数字升序排序后可以组成连续的一段数列,换句话说,满足一段区间内的最大值-最小值=r-l则称这个区间的数列为& ...

  2. ARC 128D - Neq Neq(dp+组合数学+思维)

    链接 题意: 给出你一个长度为n的序列,你可以对其操作使得这个序列发生变化,问一共有多少种? 对于连续的i-1,i,i+1,这三个数如果满足 ai−1!=aia_{i-1}!=a_{i}ai−1​!= ...

  3. CodeForces - 894B Ralph And His Magic Field(组合数学+思维)

    题目链接:点击查看 题目大意:给出一个 n * m 的棋盘,需要在棋盘内填充数字,使得每一行.每一列的乘积都等于 k,问有多少种方案 题目分析:因为 k 只可能是 1 或 -1,所以在棋盘内填充的数字 ...

  4. CodeForces - 1366E Two Arrays(组合数学+思维)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列 a ,再给出一个长度为 m 的序列 b ,题目保证序列 b 是严格递增的,我们需要将 a 分割成恰好 m 段,使得每一段的最小值恰好等于 b[ ...

  5. Permutation Partitions CodeForces - 1326C(组合数学+思维)

    You are given a permutation p1,p2,-,pn of integers from 1 to n and an integer k, such that 1≤k≤n. A ...

  6. 【Codeforces 869 C The Intriguing Obsession】 组合数学 思维

    C. The Intriguing Obsession time limit per test1 second memory limit per test256 megabytes inputstan ...

  7. 2022年5月8号补题

    title: 5月8号补题 date: 2022-05-08 10:37:59 author: "胡耀文" categories: "算法" tags: &qu ...

  8. Acwing第 33 场周赛【完结】

    目录 4206. 判断数字[水题] 4207. 最长合法括号子序列[思维] 4208. 电话号码[模拟] 4206. 判断数字[水题] #include<bits/stdc++.h> us ...

  9. Educational Codeforces Round 111 (Rated for Div. 2)

    Educational Codeforces Round 111 (Rated for Div. 2) 题号 题目 知识点 A Find The Array B Maximum Cost Deleti ...

最新文章

  1. python测试rabbitmq的消息收发
  2. VMware vSphere简介
  3. 新JSON绑定库JSON-B发布公开预览版
  4. Matlab学习笔记:画图多重设置
  5. SharePoint2013开发环境搭建(完整版:图文并茂)
  6. jsoup 获取html中body内容_jsoup实现java抓取网页内容
  7. mysql unix formtime_linux下find命令-atime,-ctime,-mtime真正含义
  8. 13.函数式编程:匿名函数、高阶函数、装饰器
  9. 海南计算机考研和培训哪个比较好,海南考研集训营前十排名
  10. 计算机网络概念,组成,功能和分类
  11. ZABBIX 3.2.7 (源码包)安装部署
  12. 算法 排序 python 实现--堆排序
  13. CAN:CANape使用Function处理数据
  14. word自带公式编辑_怎么在Word上编辑数学公式?教你一招
  15. 键盘调节台式计算机声音,台式电脑如何用键盘控制声音开关
  16. 爬虫--破解验证码的几种方式
  17. 学校计算机机房解说词,学校会议室解说词.doc
  18. 使用 zk-SNARK 的可编程零知识证明:第 1 部分
  19. 【算法随记五】使用FFT变换自动去除图像中严重的网纹。
  20. 微信小程序开发教程:wxml

热门文章

  1. [转] error: cannot run test program while cross compiling
  2. FindBugs-IDEA插件找到代码中潜在的问题
  3. CS231n系列课程Lecture4:Backpropagation and Neural Networks(part 1)
  4. 蓝星代shua网源码 附带商品详细视频教程
  5. Kaldi学习笔记:01(kaldi/egs/sitw/v1)run.sh解析
  6. 人脸识别是如何实现的
  7. 三国演义讲述了60个道理,太精辟了!
  8. 在Excel中如何生成相关性的图
  9. matlab实现2dpsk调制与解调,(完整版)2DPSK调制与解调matlab
  10. 【友盟+】携手天猫,大数据破解手机存量增长难题