欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++国王的魔镜

发布时间:2023/12/20 c/c++ 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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; }//我写的代码

总结

以上是生活随笔为你收集整理的C++国王的魔镜的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。