제출 #592981

#제출 시각아이디문제언어결과실행 시간메모리
592981HanksburgerPalindromic Partitions (CEOI17_palindromic)C++17
100 / 100
68 ms19028 KiB
#include <bits/stdc++.h>
using namespace std;
const long long mod1=1e15+1, mod2=1e15+3;
long long power1[1000005], power2[1000005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    power1[0]=power2[0]=1;
    for (long long i=1; i<=1e6; i++)
        power1[i]=power1[i-1]*26%mod1;
    for (long long i=1; i<=1e6; i++)
        power2[i]=power2[i-1]*26%mod2;
    long long t;
    cin >> t;
    while (t--)
    {
        string str;
        cin >> str;
        long long len=str.length(), x1=0, x2=0, y1=0, y2=0, cnt=0, ans=0;
        for (long long i=0; i<len/2; i++)
        {
            x1=(x1*26+str[i]-'a')%mod1;
            x2=(x2*26+str[i]-'a')%mod2;
            y1=(y1+(str[len-i-1]-'a')*power1[cnt])%mod1;
            y2=(y2+(str[len-i-1]-'a')*power2[cnt])%mod2;
            cnt++;
            if (x1==y1 && x2==y2)
            {
                ans+=2;
                x1=x2=y1=y2=cnt=0;
            }
        }
        cout << ans+(cnt || len&1) << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...