• 2021.5.15 1rating 补题报告


    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
  • 相关阅读:
    BJDCTF-WP
    Python 每日一练(4)
    Python 每日一练(3)
    BUUCTF Crypto
    Python每日一练(1)
    Python 每日一练(2)
    oracle 组函数
    oracle 组函数
    oracle
    前端实战遇到问题
  • 原文地址:https://www.cnblogs.com/lvguapi/p/14823346.html
Copyright © 2020-2023  润新知