洛谷 P2799 国王的魔镜

时间:2022-07-25 15:27:26

把项链当做字符串输进去,可以用gets

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
char a[100000];
int fj(int);
int main()
{
         gets(a);
         int len=strlen(a);
         fj(len);
         return 0;
}
int fj(int x)
{
        int m=x/2;
        if(x%2!=0)                //如果项链不能被2整除,证明项链没有被施法。。。
        {
             cout<<x;
              return x;
        }

else
        {
             for(int i=0,j=x-1;i<m;i++,j--)
            {
                 if(a[i]!=a[j])                      //如果无法对称
                 {
                       cout<<x;
                       return x;
                 }

}
          }
        fj(m);             //符合第一层要求,递归,继续拆分
}