# 题目描述

聪明的魔法师水獭正在学习悬浮咒(𝔚𝔦𝔫𝔤𝔞𝔯𝔡𝔦𝔲𝔪 𝔏𝔢𝔳𝔦𝔬𝔰𝔞​)。

咒语的力量源自于平衡。水獭发现,只有找到具有平衡性质的 “魔力字符串 “,才能成功施展出魔法。具体来说,“魔力字符串 “具有以下特点:

  1. 如果字符串长度为奇数,且其是一个回文串,即正着读和反着读相同,则此字符串为 “魔力字符串”。

  2. 如果字符串长度为偶数,且其倒序后与原字符串的每一对应位置字符都不相同,则此字符串为 “魔力字符串”。

现在,请你帮忙判断对于给定的字符串,是否是” 魔力字符串 “。

# 输入格式

第一行一个正整数 nn,表示接下来有 nn 组数据要判断,保证 1n1001 \le n \le 100

对于每组数据,输入一行一个字符串 ss,仅包含小写字母,保证 1s1000001 \le |s| \le 100000,其中 s|s| 表示字符串 ss 的长度。

# 输出格式

对于每组输入,输出一行,若 ss 是 “魔力字符串”,输出 Wingardium Leviosa ,否则输出 The spell fails

# 样例输入

4
level
otter
otters
ottero

# 样例输出

Wingardium Leviosa
The spell fails
Wingardium Leviosa
The spell fails

# 题解:模拟

直接用字符数组存下字符串,然后依题意模拟即可。以下是参考代码:

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int T;
char str[100010];
int main()
{
    // freopen("C.in", "r", stdin);
    // freopen("C.out", "w", stdout);
    scanf("%d", &T);
    while (T -- )
    {
        getchar();
        scanf("%s", str);
        int len = strlen(str);
        bool flag = true;
        if (len & 1)
        {
            for (int i = 0; i < (len >> 1); ++ i)
                if (str[i] != str[len - 1 - i])
                {
                    flag = false;
                    break;
                }
        }
        else
        {
            for (int i = 0; i < (len >> 1); ++ i)
                if (str[i] == str[len - 1 - i])
                {
                    flag = false;
                    break;
                }
        }
        
        if (flag)
            puts("Wingardium Leviosa");
        else
            puts("The spell fails");
    }
    return 0;
}