原题链接
题意
给一个数字,每次可以翻转前缀,问翻转几次可以使这个数变成一个偶数。
思路
如果本身就是偶数,就不用翻转
如果首位是偶数,翻一次
如果中间有偶数,那么就先把中间那个数翻到首位,然后再翻到末尾,共2次
如果中间没有偶数,就是-1
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t -- )
{
string s;
cin >> s;
int len = s.length();
if ((s[len - 1] - '0') % 2 == 0) cout << "0" << endl;
else if ((s[0] - '0') % 2 == 0) cout << "1" << endl;
else
{
bool f = 0;
for (int i= 0; i < len; i ++ )
{
if ((s[i] - '0') % 2 == 0)
{
f = 1;
break;
}
}
if (!f) cout << "-1" << endl;
else cout << "2" << endl;
}
}
return 0;
}
总结
简单题。