New Skateboard CodeForces

来源:互联网 发布:javimdb最新域名 编辑:程序博客网 时间:2024/06/08 15:40

题目链接


题意:

给你一个字符串,让你找出能整除4的有多少个。


思路:

 字符串比较大,暴力肯定TLE,我们可以这样想,由于是要整除4,因为100可以整除4,也就是说只要最后两位能整除4,那么无论前面是什么都可以整除4了.所以我们从后往前扫一遍,如果后两位可以整除就直接加上前面的字符串长度,另外记得判断单独一位能整除4的情况.


PS:这个题也可以找到如果个位是4 8 0 那么十位必须是个偶数才能整除4,如果个位为2 6 那么前面必须是奇数才能整除4 

#include<bits/stdc++.h>using namespace std;const int maxn=1e5+10;typedef long long ll;char  s[3*maxn];int main(){ll ans=0;scanf("%s",s);int len=strlen(s);for(int i=len-1;i>=0;i--){int x=s[i]-'0';if(x%4==0)ans++;int y=s[i-1]*10+x;if(y%4==0){ans+=i;}}printf("%lld\n",ans);return 0;}