不同的子序列
时间限制:1秒 内存限制:256M
【问题描述】
序列 \(S\) 的一个子序列为删掉 \(S\) 中的 零个或几个元素后的序列。严格地说:对于序列 \(Z=z_1z_2…z_k\)和\(X=x_1x_2…x_m\),当且仅当存在一个严格递增的 \(X\) 下标序列,使得对于所有的 \(j=1,2,…,k\),均有 \(x_{i_j}=z_j\),称 \(Z\) 为 \(X\) 的一个子序列。例如,\(Z=bcdb\) 就是 \(X=abcbdab\) 的一个子序列,对应的下标序列为 \(<2,3,5,7>\)。
你的任务是写一个程序,统计 \(Z\) 在 \(X\) 中作为不同的子序列(即对应不同的下标序列)出现了多少次。
【输入格式】
第一行包含一个字符串\(X\),完全由小写英文字母组成并且长度不超过10000。
接下来的一行为另一个字符串 \(Z\),长度不超过100,同样由小写英文字母组成。保证 \(Z\) 或它的任意前缀,后缀在 \(X\) 出现的次数均不超过 \(10^{100}\)。
【输出格式】
一个整数,表示Z在X中出现的次数。
【输入输出样例1】
Input
babgbag
bag
Output
5
【输入输出样例2】
Input
rabbbit
rabbit
Output
3
【数据限制】
完全由小写英文字母组成并且长度不超过10000。
【来源】
Mr.he