牛客练习赛95 A Duplicate Strings

Duplicate Strings

https://ac.nowcoder.com/acm/contest/11185/A

直接操作显然是不可以的。

由于题目中要求求字母个数,那我们就可以将字符串中每个字母的出现次数存储起来,每次操作 11 就相当于将每个字母的出现次数都乘以 kk,操作 22O(1)O(1) 直接输出即可。

代码如下:

#include <bits/stdc++.h>

using namespace std;

#define int long long

const int mod = 1e9 + 7;

long long t[55];

bool f[100005];

signed main () {
    int n, q;
    
    cin >> n >> q;
    
    string s;
    
    cin >> s;
    
    for (int i = 0; i < s.size (); i ++) {
        t[s[i] - 96] ++;//减96转化为数字。
        
        f[s[i] - 96] = true;
    }
    
    char c;
    
    int k, op;
    
    while (q --) {
        cin >> op;
        
        if (op == 1) {
            cin >> k;
            
            for (int i = 1; i <= 26; i ++) {
                if (f[i] == true) {
                    long long x = t[i];
                    
                    t[i] += x * k;
                    
                    t[i] %= mod;
                }
            }
        }
        
        if (op == 2) {
            cin >> c;
            
            cout << (t[c - 96] % mod) << endl;
        }
    }
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务