该题考察模拟和4的倍数的性质.首先4的倍数最后2位是4的倍数,如136,36%4==0,故136为4的倍数,证明百度
此题需要向右移动字符串,我们需要特判3个东西
将这3个特判以后我们模拟即可,比如第二次移动是s[0]s[1],第三次是s[1]s[2],以此类推
#include <bits/stdc++.h>
using namespace std;
string s;
int main(){
cin >> s;
int n=s.size(),res=1;//因为有第三个特判,所以从1开始
if(n==1 && s[0]-'0'%4==0) {cout << 0 << endl;return 0;}//第一个特判
else if((s[n-1]-'0'+(s[n-2]-'0')*10)%4==0) {cout << 0 << endl;return 0;}//第二个特判
else if((s[0]-'0'+(s[n-1]-'0')*10)%4==0) {cout << 1 << endl;return 0;}//第三个特判
else{
//逐位检查每一次移动
for(int i=0;i<n-2;i++){
if((s[i+1]-'0'+(s[i]-'0')*10)%4==0){
res++;
cout << res << endl;
return 0;
}
res++;
}
}
cout << -1 << endl;
return 0;
}