本文主要是介绍小鹏的镜子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
小鹏有一面镜子,可以把接触的东西变成原来的两倍。但是因为是镜子嘛,只能对称变换。假如有一个为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;
}
这篇关于小鹏的镜子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!