题意:问给定的大数串中有多少个子串是4的倍数(可含前导零)。
思路:想暴力都不知道该怎么写。。
正解:因为100是4的倍数,所以我们只检查每相邻两位就好了。。看哭了。。
代码:
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
cin>>s;
int sz=s.size();
long long ans=0;
for(int i=0;i<sz;i++)
{
if(s[i]=='0'||s[i]=='4'||s[i]=='8')
ans++;
}
for(int i=1;i<sz;i++)
if(((s[i-1]-'0')*10+s[i]-'0')%4==0)
ans+=(i);
cout<<ans;
}