比赛 NOIP2025模拟赛2 评测结果 AAAAAAAAAAAAAAAA
题目名称 回文块 最终得分 100
用户昵称 梦那边的美好TT 运行时间 0.200 s
代码语言 C++ 内存使用 4.23 MiB
提交时间 2025-11-25 09:41:56
显示代码纯文本
#include <iostream>
#include <string>
using namespace std;
const unsigned long long P = 131;
const unsigned long long MOD = 1000000007;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    freopen("palin.in", "r", stdin);
    freopen("palin.out", "w", stdout);

    int t;
    cin >> t;
    while (t--) {
        string s;
        cin >> s;
        int n = s.size();
        if (n == 0) {
            cout << 0 << endl;
            continue;
        }

        long long ans = 0;
        unsigned long long hash1 = 0;
        unsigned long long hash2 = 0;
        unsigned long long pow_p = 1;

        for (int i = 0; i < n / 2; ++i) {
            hash1 = (hash1 * P + s[i]) % MOD;
            hash2 = (s[n - 1 - i] * pow_p + hash2) % MOD;
            pow_p = (pow_p * P) % MOD;
            if (hash1 == hash2) {
                ans += 2;
                hash1 = 0;
                hash2 = 0;
                pow_p = 1;
            }
        }
        if (hash1 != 0 || n % 2 == 1) {
            ans += 1;
        }
        cout << ans << endl;
    }
    return 0;
}