# 题目描述
聪明的魔法师水獭正在学习悬浮咒(𝔚𝔦𝔫𝔤𝔞𝔯𝔡𝔦𝔲𝔪 𝔏𝔢𝔳𝔦𝔬𝔰𝔞)。
咒语的力量源自于平衡。水獭发现,只有找到具有平衡性质的 “魔力字符串 “,才能成功施展出魔法。具体来说,“魔力字符串 “具有以下特点:
- 
如果字符串长度为奇数,且其是一个回文串,即正着读和反着读相同,则此字符串为 “魔力字符串”。
 - 
如果字符串长度为偶数,且其倒序后与原字符串的每一对应位置字符都不相同,则此字符串为 “魔力字符串”。
 
现在,请你帮忙判断对于给定的字符串,是否是” 魔力字符串 “。
# 输入格式
第一行一个正整数 ,表示接下来有 组数据要判断,保证 。
对于每组数据,输入一行一个字符串 ,仅包含小写字母,保证 ,其中 表示字符串 的长度。
# 输出格式
对于每组输入,输出一行,若  是 “魔力字符串”,输出  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;  | |
} |