Description
给出
n
个长度为
Input
第一行两个整数
Output
输出可以得到的字符串个数,结果模 109+7
Sample Input
2 3
AAB
BAA
Sample Output
4
Solution
操作 (i,j,k) 后再操作 (i,j,k−1) 即可实现交换两个字符串第 k <script type="math/tex" id="MathJax-Element-30">k</script>个字符的效果,故方案数其实就是每一位可以取到的不同字符种类乘积
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=105;
#define mod 1000000007
int n,m;
char s[maxn][maxn];
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=1;i<=n;i++)scanf("%s",s[i]+1);
set<char>S;
int ans=1;
for(int j=1;j<=m;j++)
{
S.clear();
for(int i=1;i<=n;i++)S.insert(s[i][j]);
ans=(ll)S.size()*ans%mod;
}
printf("%d\n",ans);
}
return 0;
}