C++国王的魔镜
目录
题目描述:
输入
输出
样例
输入
输出
数据范围限制
代码展示
题目描述:
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
输入
只有一个字符串,由大写英文字母组成,表示最终的项链(长度<=255)。
输出
只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例
输入
ABBAABBA输出
2数据范围限制
无
代码展示
#include<cstdio> #include<cstring> using namespace std; char a[300]; int main() {char ch;int k=0,y,sum=0;scanf("%c",&ch);while(ch!='\n'&&ch!='\r'){k++;a[k]=ch;scanf("%c",&ch);}y=k;while(y%2==0&&a[1]==a[y]){y/=2;}printf("%d",y);return 0; } #include<iostream> using namespace std; int main() {string s;getline(cin,s);int len=s.size();if(len%2!=0){cout<<len;}else{while(1){for(int i=0,j=len-1;i<j;i++,j--){if(s[i]!=s[j]){cout<<len;return 0;}}len/=2;}}return 0; }//我写的代码总结
- 上一篇: 本科毕业设计之文献翻译
- 下一篇: vc编写改键精灵