小鹏的镜子

题目描述
小鹏有一面镜子,可以把接触的东西变成原来的两倍。但是因为是镜子嘛,只能对称变换。假如有一个为BA的珍珠项链,字母不一样代表的颜色不一样。现在小鹏用镜子将项链复制之后,项链变成了BAAB。如果再复制一遍的话,项链就会变成BAABBAAB。因为小鹏比较贪心,一直复制,最后竟然忘记原来的项链是什么样的了,接下来就请聪明的acmer编写程序,算出最开始项链的长度吧。

输入描述
第一行N表示接下来有N(N<=10)个串;之后的N行,每行是一个不超过100个大写英文字母组成的串。

输出描述
输出N行,每行是项链的初始长度

样例输入
2
ABBAABBA
AAAA

样例输出
2
1

示例代码:

#include<iostream>
using namespace std;
int main(){
  int N;//N个串
  int flag;
  int str_down;
  string str;
  cin>>N;
  while(N--){
    cin>>str;
    str_down=str.length()-1;
    flag=1;
    while(flag){//检查项链的初始长度
      if((str_down+1)%2==1)//长度为单数,肯定不满足对称变换
        break;
      for(int j=0,k=str_down;j<k;j++,k--){//判断是否满足对称变换
        if(str[j]!=str[k]) flag=0;
        if(!flag) break;
      }
      if(flag)//如果满足,则长度减半
        str_down=str_down/2;
    }
    cout<<str_down+1;
    if(N!=0) cout<<endl;
  }
  return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值