首页 > 其他 > 详细

2021.5.15 1rating 补题报告

时间:2021-05-28 19:31:56      阅读:20      评论:0      收藏:0      [点我收藏+]

C - Pocket Book

1.思路

  给定n个长度为m的字符串,任意两个字符串可以交换前k个字符,交换后字符串变成新的字符串,最多能产生多少个不同的字符串。找规律可以发现,每个字符串的每一列都可以变成所有字符串的该列的字符,所以统计每一列有多少个不同的字符,排列组合相乘即可。

2.代码

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 const int mod = 1e9 + 7;
 5 int n, m;
 6 ll ans = 1;
 7 set<char> st[105];
 8 string s[105];
 9 int main() {
10     cin >> n >> m;
11     getchar();
12     for(int i = 0; i < n; i++) {
13         cin >> s[i];
14     }
15     for(int i = 0; i < n; i++) {
16         for(int j = 0;j < m; j++) {
17             st[j].insert(s[i][j]);
18         }
19     }      
20     for(int i = 0; i < m; i++) {
21        ans = (ans * st[i].size()) % mod;
22     }
23     cout << ans << endl;
24     
25     return 0;
26 }
View Code

 

2021.5.15 1rating 补题报告

原文:https://www.cnblogs.com/lvguapi/p/14823346.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!