[HDU6754] Distinct Sub-palindromes

题目:HDU6754
题意:
S是长度为n的字符串。 S由小写英文字母组成。
您的任务是计算具有最少亚种回文数的不同S的数目。 亚种回文是回文的子字符串。
如果两个子回文式u和v的长度不同或对于某些i(0≤i≤length)ui≠vi,则它们是不同的。 例如,字符串“ aaaa”仅包含四个不同的子回文,即“ a”,“ aa”,“ aaa”和“ aaaa”。

思路:
注意到,当n = 1的时候,Sub-palindrome的数目最少为1,答案为26个字母。
当n = 2的时候,aa的Sub-palindrome有a和aa,为2个;ab的Sub-palindrome有a,b,两个。(ab不是回文串)所以n = 2的时候答案是26 * 26 = 676;
当n = 3的时候,aaa的Sub-palindrome有a,aa和aaa,为3个;abc有a,b,c,三个……aba则有a,b和aba,三个……发现找不到长度为3以下的Sub-palindrome,所以答案是262626;
当n >= 4的时候,为了让Sub-palindrome的数目最少,我们可以用abc,abc,abc的方法构造。这样的构造法下,答案是262524.
“Since the answer can be huge, output it modulo 998244353.”这一行就是误导人的。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t;
    cin >> t;
    while(t--)
    {
        int n;
        cin >> n;
        if(n <= 3)
            cout << pow(26,n) << endl;
        else
            cout << 26 * 25 * 24 << endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值