国王的魔镜(南阳oj264)(字符串处理)

国王的魔镜

时间限制:3000 ms  |  内存限制:65535 KB

难度:1

描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。

比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。

给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。

输入
第一行是一个整数N(N<=10)表示测试数据的组数)

每组测试数据占一行 只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。

输出
每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输入
2
ABBAABBA
A
样例输出
2
1
来源
2008年小学生程序设计友谊赛试题
上传者

ACM_赵铭浩

#include<stdio.h>
#include<string.h>
int main()
{
	int i,len,test,t,l;
	char s[200];
	scanf("%d",&test);
	while(test--)
	{
		scanf("%s",s);
		len=strlen(s);
		t=len;
		if(len%2==1)
		printf("%d\n",len);
		else
		{
			l=0;
			while(t%2==0)
			{
				for(i=0;i<=t/2;i++)
				{
					if(s[i]!=s[t-i-1])
					{
					   l=1;
					   break;
				    }
				}
				if(l==1)
				{
				    printf("%d\n",t);
				    break;
			    }
			    if(i==t/2+1)
				    t/=2;
			}
			if(l==0)
			printf("%d\n",t);
		}
	}
	return 0;
} 
时间: 2024-08-11 07:39:00

国王的魔镜(南阳oj264)(字符串处理)的相关文章

南阳264(国王的魔镜)

国王的魔镜 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的. 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜). 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度. 输入 第一行是一个整数N(N<

NYOJ 264 国王的魔镜

国王的魔镜 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍--只是,因为是镜子嘛,增加的那部分是反的. 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜). 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度. 输入 第一行是一个整数N(N<

洛谷 P2799 国王的魔镜

P2799 国王的魔镜 题目描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的.比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜).给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度. 输入输出格式 输入格式: 只有一个字符串,由大写英文字母组成(字母数<=100000),表

国王的魔镜

时间限制:3000 ms  |  内存限制:65535 KB难度:1 描述    国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍--只是,因为是镜子嘛,增加的那部分是反的. 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜). 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度. 输入    第一行是一个整数N(N<=

264 国王的魔镜

  描述 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的. 比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠.如果把B端接触镜面的话,魔镜会把这条项链变为ABBA.如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜). 给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度. 输入 第一行是一个整数N(N<=10)表示测试数据的组数)每组测试数据占一行 只有一个字符串(长度小于100)

题解 P2799 【国王的魔镜】

本蒟蒻在刚开始做这题时第一反应就是递归,题目不难,但我提交了n次才过. 下面粘代码,我的代码冗长,但思路非常明确. #include<bits/stdc++.h>//看到大佬们都不推荐使用,但我还是会使用,因为到目前为止我还没有遇到一个与它有关的问题 using namespace std; char a[1000010];//利用a来进行存储原始的排列顺序. int ans=0;//ans用来记录分解的次数. void fj(int r)//递归操作 { int mid=r/2;//进行分解

南阳oj 字符串替换

#include<iostream>#include<string.h>#include<stdio.h>using namespace std;int main (){ char s[1005]; while(gets(s)) { int m=strlen(s); int n=m; for(int i=0;i<m;i++) { if(s[i]=='y'&&s[i+1]=='o'&&s[i+2]=='u') { cout<&l

水题:P2799 国王的魔镜

思路:简单模拟即可.判断一下是不是回文,是回文看长度是不是偶数.是偶数的话,说明又可能是回文.依次这样处理.但是只要长度为奇数则一定是原来的长度直接输出即可. #include<iostream> #include<cstring> using namespace std; const int maxn = 100000 + 10; char num[maxn]; bool flag(int x){ int p = 0, q = x-1; while (p < q&&

数字(南阳oj1162)(字符串处理)

数字 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 描述 有一行数字 ,现在定义 0表示空格,即这行数字被分割成若干个数 要求将这些数按照从小到大顺序排列,若该行数字全为零 则表示为零,两个数字之间可能有多个0,开头和结尾可能都有0,所有的0都看成空格,数字的个数不超过100. 输入 输入有n组数据 每组数据都有一行数字(每个数在整形范围内) 输出 输出0或去掉多余空格的数据 样例输入 4 000 00123 12301 1230 样例输出 0 123 1 123 12