模拟题,把题目读懂就好了。这里可以自己多出几个实例,方便总结性质。
int main()
{
string a;
while (cin >> a)//1 2 IM
{
int len = a.size() / 2;
string test1 = a.substr(0, len);
if(a.size()==1) { puts("Impossible");continue; }
map<char, int> mp;
for (auto I : test1)
{
mp[I]++;
}
if (mp.size() == 1) { puts("Impossible");continue; }
//试过两刀必行,枚举是否可一刀
int fg = 0;
f(i, 1, a.size() - 1)
{
string test2 = a.substr(0, i);
string test3 = a.substr(i, a.size() - i);
test3 += test2;
string test4 = test3;
reverse(test4.begin(), test4.end());
if (test3==test4&&test3!=a) {
fg = 1;
break;
}
}
if (fg)puts("1");
else puts("2");
}
return 0;
}