国王的魔镜
来源:互联网 发布:centos官网下载镜像 编辑:程序博客网 时间:2024/06/04 08:12
国王的魔镜
时间限制:3000 ms | 内存限制:65535 KB
难度:1
- 描述
- 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
- 输入
- 第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一行 只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。 - 输出
- 每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
- 样例输入
2ABBAABBAA
- 样例输出
21
- 来源
- 2008年小学生程序设计友谊赛试题
- 上传者
ACM_赵铭浩
问题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=264
问题分析:
1当输入长度len为奇数时,直接输出字符串的长度;
2当len为偶数时,则先判断其是否为回文,若不是回文,则直接输出其长度;
3若是回文,则返回第二步进一步判断其一半是否为回文。
代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <vector> #include <queue> #include <stack> #include <map> #include <string> #include <algorithm> #include <iomanip>using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */char input[101];bool isHuiwen(int ans){int i=0,j=ans-1;while(i<j){if(input[i] != input[j]){return false;}i++,j--;}return true;}int main(int argc, char** argv) {/*freopen("file/input.txt","r",stdin);freopen("file/output.txt","w",stdout);*/int n;scanf("%d",&n);getchar();while(n--){scanf("%s",input);int ans=strlen(input);while(ans%2 == 0 && isHuiwen(ans)){ans/=2;} printf("%d\n",ans);}return 0;}
代码分析:注意当len为偶数时,当遇到AA这种输入时,ans会除到1,此时因为1是奇数,因此进行输出。
阅读全文
0 0
- 国王的魔镜
- NYOJ - 国王的魔镜
- 264-国王的魔镜
- 国王的魔镜
- NYOJ264 国王的魔镜
- NYOJ_264国王的魔镜
- 国王的魔镜
- 264 国王的魔镜
- nyoj264国王的魔镜
- 国王的魔镜
- 国王的魔镜
- NYOJ264 国王的魔镜
- 264 国王的魔镜
- 1170 -- 国王的魔镜
- 国王的魔镜 21
- nyoj264国王的魔镜
- NYOJ264国王的魔镜
- 国王的魔镜
- Python装饰器----类型转换
- top
- 夏目漱石《我是猫》读后感
- EffectiveC++学习笔记-条款11
- centos7 minimal 环境下源码安装 mysql5.7.18
- 国王的魔镜
- Servlet出现500错误 提示Error instantiating servlet class
- 分治、动态规划、贪心、回溯、分支限界算法
- C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面
- List集合元素操作方法
- Maven生成可以直接运行的jar包的多种方式
- Class<T>:类类型
- 刷清橙OJ--A1087.高精度加法
- 一阶高通滤波器