2141: 2333
时间限制: 1 Sec 内存限制: 128 MB提交: 77 解决: 17
[提交] [状态] [讨论版] [命题人:admin]
题目描述
“别人总说我瓜,其实我一点也不瓜,大多数时候我都机智的一批“ 宝儿姐考察你一道很简单的题目。给你一个数字串,你能判断有多少个连续子串能整除3吗?
输入
多实例输入,以EOF结尾,每行一个数字串(长度<=1e6)
输出
每行一个数字串,表示能整除3的连续子串的个数
样例输入
2333
样例输出
6
#include <iostream>
#include <cstdio>
#include <map>
#include <string>
#include<cstring>
#include<algorithm>
#include<vector>
typedef long long ll;
const int maxn = 1010000;
using namespace std;
int n, m,res;
int a[maxn];
int main()
{
string sr;
while (cin >> sr)
{
int len = sr.length();
for (int i = 0; i < len; i++) a[i + 1] = (a[i] + sr[i] - '0')%3;
int num[3] = { 0 };
num[0] = 1;
ll ans = 0;
for (int i = 1; i <= len; i++)
{
ans += num[a[i]];
num[a[i]]++;
}
cout << ans << endl;
}
return 0;
}