国王的魔镜

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

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

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

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

输入
    第一行是一个整数N(N<=10)表示测试数据的组数)
    每组测试数据占一行 只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。
输出
    每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输入

2
    ABBAABBA
    A

样例输出

2
    1

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

int main()
{
    int a;
    cin>>a;
    while(a--)
    {
        char str[105];
        int len;
        cin>>str;
        len=strlen(str);
        while(len%2==0)
        {
            if(str[len/2-1]==str[len/2])
            {
                len/=2;
            }
            else
                break;
        }
        cout<<len<<endl;
    }
    return 0;
}

时间: 2024-10-20 15:35:23

国王的魔镜的相关文章

南阳264(国王的魔镜)

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

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

国王的魔镜 时间限制: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),表

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;//进行分解

水题: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&&

计蒜客NOIP模拟赛(3)D1T3 任性的国王

X 国的地图可以被看作一个两行 nn 列的网格状图.现在 X 国需要修建铁路,然而该国的国王非常小气,他只想保证位于某两列之间的所有城市互相可以到达就行了,在此基础上,他希望所花费的代价最小. 铁路可以建在任何两个相邻的点之间,使他们可以互相到达.可以作为工作人员,你已经整理出了为每一对相邻城市架设铁路所需要的花费.你需要准备好回答国王如下形式的问题. 对于 (i,j)(i,j):当前情况下,使第 ii 列到第 jj 列之间的所有城市连通的最小代价是多少(列下标从 11 开始)?注意不能用其他列

[NOIP2012提高组]国王旅行

题目:洛谷P1080.Vijos P1779. 题目大意:国王和每个大臣左.右手各写了一个数.规定每个大臣得到的金币数为他前面所有人左手的数字的乘积除以他自己右手的数(向下取整),现在国王要改变大臣的排列顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少(国王永远站在最前面). 解题思路:(贪心)首先,交换相邻两个大臣只会对这两个大臣造成影响,并不会对其他大臣造成影响. 我们考虑大臣i和i+1,设他们左手数字分别为A[i]和A[i+1],右手分别为B[i]和B[i+1],前i-1个大臣和国王左手的