Problem:
Score : 400 points

Problem Statement

Given is a string S consisting of digits from 1 through 9.

Find the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the following condition:

Condition: In base ten, the i-th through j-th characters of S form an integer that is a multiple of 2019.

Constraints

1 ≤ |S| ≤ 200000

S is a string consisting of digits from 1 through 9.

Input

Input is given from Standard Input in the following format:

S

Output

Print the number of pairs of integers (i,j) (1 ≤ i ≤ j ≤ |S|) that satisfy the condition.

Sample Input 1

1817181712114

Sample Output 1

3

Three pairs - (1,5), (5,9), and (9,13) - satisfy the condition.

Sample Input 2

14282668646

Sample Output 2

2

Sample Input 3

2119

Sample Output 3

0

No pairs satisfy the condition.

Solution in JavaScript (Node.js 12.16.1) (judge verdict: Wrong Answer)

process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
});
reader.on('line', (line) => {
    lines.push(line);
});
reader.on('close', () => {
    const s = parseInt(lines[0]);
    const str = lines[0]; //.split("");
    let ans = 0;
    const s1 = Math.floor(s / 2019);
    console.log(`s1=${s1}`);
    for (let i = 1; i <= 10000; i++) {
        //console.log(`${i} str:${(2019 * i).toString()}`);
        for(let j = 0; j < str.length; j++){
            if (str.startsWith( (2019 * i).toString(), j)){
                ans++;
            }
        } 
        // const re = new RegExp("(" + (2019 * i).toString() + ")", "g");
        // const group = str.match(re);
        // console.log(group);
        // if (group !== null) {
        //     ans += group.length;
        // }
    }

    // for(let i = 0; i <= str.length - 1; i++){
    //     for(let j = i + 4; j <= str.length; j++){
    //         const num = parseInt(str.slice(i, j).join(""));
    //         if (num % 2019 === 0){
    //             ans++;
    //             console.log(`${i} ${j} num:${num} *`);
    //         }else{
    //             console.log(`${i} ${j} num:${num}`);
    //         }
    //     }
    // }
    console.log(ans);
});