1 solutions

  • 0
    @ 2025-12-3 16:27:17

    C++ :

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<vector>
    #include<queue>
    #include<map>
    using namespace std;
    const long long N=100+5,md=1000000007;
    long long n,f[N][N],g[N][N],ans;
    string st;
    int main()
    {
    	cin>>st; n=st.size();
    	st=" "+st;
    	for (int i=1;i<=n;i++) f[i][i]=g[i][1]=1;
    	ans=n;
    	for (int l=2;l<=n;l++)
    	{
    		for (int i=1,j=l;j<=n;i++,j++)
    		{
    			g[i][l]=g[i][l-1];
    			if (st[i]!=st[j]) continue;
    			f[i][j]=1;
    			for (int k=i+1;k<=j-1;k++)
    			{
    				f[i][j]+=g[k][j-k];
    				f[i][j]%=md;
    			}
    			g[i][l]+=f[i][j]; g[i][l]%=md;
    			ans+=f[i][j]; ans%=md;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    
    • 1

    Information

    ID
    887
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    (None)
    # Submissions
    0
    Accepted
    0
    Uploaded By