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;
}
