Language: C

package main

import (
	"bufio"
	"container/heap"
	"fmt"
	"math"
	"os"
	"strconv"
)

const (
	initialBufSize = 10000
	maxBufSize     = 1000000
	mod            = 1e9 + 7
)

var (
	sc *bufio.Scanner = func() *bufio.Scanner {
		sc := bufio.NewScanner(os.Stdin)
		buf := make([]byte, initialBufSize)
		sc.Buffer(buf, maxBufSize)
		sc.Split(bufio.ScanWords)
		return sc
	}()
)

func main() {
	S := getString()
	n := len(S)

	result := 0
	l := 0
	r := l+4
	for ; l <= n - 4; {
		hasValue := false
		for ; r <= min(l+10, n); r++ {
			var num int
			if r != n {
				num, _ = strconv.Atoi(S[l:r])
			} else {
				num, _ = strconv.Atoi(S[l:])
			}
			if num % 2019 == 0 {
				hasValue = true
				break
			}
		}

		if hasValue {
			result++
			l = r - 1
		} else {
			l++
		}

		r = l + 4
	}
	fmt.Println(result)
}

type Graph struct {
	n     int
	edges [][]int
}

func NewGraph(n int) *Graph {
	g := &Graph{
		n:     n,
		edges: make([][]int, n),
	}
	return g
}

func (g *Graph) AddEdge(u, v int) {
	g.edges[v] = append(g.edges[v], u)
	g.edges[u] = append(g.edges[u], v)
}

func dfs(c int, edges [][]int, visited map[int]struct{}) {
	visited[c] = struct{}{}

	for _, v := range edges[c] {
		_, flag := visited[v]
		if flag {
			continue
		}
		dfs(v, edges, visited)
	}
}

func bfs(c int, graph *Graph) {
	next := make([]int, 0)
	next = append(next, c)
	visited := make(map[int]struct{})

	for ; len(next) != 0; {
		u := next[0]
		next = next[1:]
		visited[u] = struct{}{}

		for _, v := range graph.edges[u] {
			_, flag := visited[v]
			if flag {
				continue
			}

			// なにか処理

			next = append(next, v)
		}
	}
}

func getInt() int {
	sc.Scan()
	i, e := strconv.Atoi(sc.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func getIntArray(n int) []int {
	array := make([]int, n)
	for i := 0; i < n; i++ {
		array[i] = getInt()
	}
	return array
}

func getString() string {
	sc.Scan()
	return sc.Text()
}

func getStringArray(n int) []string {
	array := make([]string, n)
	for i := 0; i < n; i++ {
		array[i] = getString()
	}
	return array
}

func abs(a int) int {
	return int(math.Abs(float64(a)))
}

func pow(p, q int) int {
	return int(math.Pow(float64(p), float64(q)))
}

func powMod(n, p int) int {
	if p == 0 {
		return 1
	} else if p%2 == 0 {
		t := powMod(n, p/2)
		return calcMod(t * t)
	} else {
		return calcMod(n * powMod(n, p-1))
	}
}

func min(nums ...int) int {
	if len(nums) == 0 {
		panic("funciton min() requires at least one argument.")
	}
	res := nums[0]
	for i := 0; i < len(nums); i++ {
		res = int(math.Min(float64(res), float64(nums[i])))
	}
	return res
}

func max(nums ...int) int {
	if len(nums) == 0 {
		panic("funciton max() requires at least one argument.")
	}
	res := nums[0]
	for i := 0; i < len(nums); i++ {
		res = int(math.Max(float64(res), float64(nums[i])))
	}
	return res
}

func strSearch(a []string, b string) bool {
	for i := 0; i < len(a); i++ {
		if a[i] == b {
			return true
		}
	}
	return false
}

func printIntArray(array []int) {
	strArray := fmt.Sprint(array)
	fmt.Println(strArray[1 : len(strArray)-1])
}

func calcMod(x int) int {
	return x % mod
}

func reverse(s string) string {
	runes := []rune(s)
	for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
		runes[i], runes[j] = runes[j], runes[i]
	}
	return string(runes)
}

func isPrime(n int) bool {
	if n < 2 {
		return false
	} else if n == 2 {
		return true
	} else if n % 2 == 0 {
		return false
	}

	sqrtN := int(math.Sqrt(float64(n)))
	for i := 3; i <= sqrtN; i += 2 {
		if n % i == 0 {
			return false
		}
	}

	return true
}

func contains(s []int, e int) bool {
	for _, v := range s {
		if e == v {
			return true
		}
	}
	return false
}

func makeRange(min, max int) []int {
	a := make([]int, max-min+1)
	for i := range a {
		a[i] = min + i
	}
	return a
}

func powerset2(nums []int) [][]int {
	length := int(math.Pow(2, float64(len(nums))))
	result := make([][]int, length)

	index := 0
	result[index] = []int{}
	index++

	for _, n := range nums {
		max := index
		for i := 0; i < max; i++ {
			result[index] = copyAndAppend(result[i], n)
			index++
		}
	}

	return result
}

func copyAndAppend(nums []int, n int) []int {
	dst := make([]int, len(nums)+1)
	copy(dst, nums)
	dst[len(nums)] = n
	return dst
}

func calcGcd(x, y int) int {
	if y == 0 {
		return x
	} else if x >= y {
		return calcGcd(y, x % y)
	} else {
		return calcGcd(x, y % x)
	}
}

func getDivisor(n int) []int {
	var divisor []int
	divisor = append(divisor, 1)
	if n != 1 {
		divisor = append(divisor, n)
	}

	sqrt := int(math.Sqrt(float64(n)))
	for i := 2; i <= sqrt; i++ {
		if n % i == 0 {
			divisor = append(divisor, i)
			divisor = append(divisor, n/i)
		}
	}
	return divisor
}

type intHeap []int

func (h intHeap) Len() int {
	return len(h)
}

func (h intHeap) Less(i, j int) bool {
	return h[i] > h[j]
}

func (h intHeap) Swap(i, j int) {
	h[i], h[j] = h[j], h[i]
}

func (h *intHeap) Push(x interface{}) {
	*h = append(*h, x.(int))
}

func (h *intHeap) Pop() interface{} {
	old := *h
	n := len(old)
	x := old[n-1]
	*h = old[0 : n-1]
	return x
}

func initHeap() *intHeap {
	ih := &intHeap{}
	heap.Init(ih)
	return ih
}

func (h *intHeap) pushHeap(n int) {
	heap.Push(h, n)
}

func (h *intHeap) popHeap() int {
	return heap.Pop(h).(int)
}

func factMod(n int) int {
	value := 1
	for ; n > 1; n-- {
		value = calcMod(value * n)
	}
	return value
}

func combinationMod(n, k int) int {
	factN := factMod(n)
	factK := factMod(k)
	factNK := factMod(n - k)
	factKR := powMod(factK, mod - 2)
	factNKR := powMod(factNK, mod - 2)
	return calcMod(factN * calcMod(factKR * factNKR))
}


Compiler output:
main.c:1:1: error: unknown type name 'package'
    1 | package main
      | ^~~~~~~
main.c:3:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'import'
    3 | import (
      | ^~~~~~
main.c:25:11: error: expected identifier or '(' before ')' token
   25 |         }()
      |           ^
main.c:62:1: error: unknown type name 'type'; did you mean 'typeof'?
   62 | type Graph struct {
      | ^~~~
      | typeof
main.c:62:11: error: expected ';' before 'struct'
   62 | type Graph struct {
      |           ^~~~~~~
      |           ;
main.c:63:9: error: expected specifier-qualifier-list before 'n'
   63 |         n     int
      |         ^
main.c:67:6: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'NewGraph'
   67 | func NewGraph(n int) *Graph {
      |      ^~~~~~~~
main.c:75:7: error: unknown type name 'g'
   75 | func (g *Graph) AddEdge(u, v int) {
      |       ^
main.c:80:1: error: unknown type name 'func'
   80 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      | ^~~~
main.c:80:10: error: unknown type name 'c'
   80 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |          ^
main.c:80:17: error: unknown type name 'edges'
   80 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |                 ^~~~~
main.c:80:32: error: unknown type name 'visited'
   80 | func dfs(c int, edges [][]int, visited map[int]struct{}) {
      |                                ^~~~~~~
main.c:92:1: error: unknown type name 'func'
   92 | func bfs(c int, graph *Graph) {
      | ^~~~
main.c:92:10: error: unknown type name 'c'
   92 | func bfs(c int, graph *Graph) {
      |          ^
main.c:92:17: error: unknown type name 'graph'
   92 | func bfs(c int, graph *Graph) {
      |                 ^~~~~
main.c:115:1: error: unknown type name 'func'
  115 | func getInt() int {
      | ^~~~
main.c: In function 'getInt':
main.c:115:19: error: expected identifier or '(' before '{' token
  115 | func getInt() int {
      |                   ^
main.c:124:1: error: unknown type name 'func'
  124 | func getIntArray(n int) []int {
      | ^~~~
main.c:124:18: error: unknown type name 'n'
  124 | func getIntArray(n int) []int {
      |                  ^
main.c:132:1: error: unknown type name 'func'
  132 | func getString() string {
      | ^~~~
main.c:132:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'string'
  132 | func getString() string {
      |                  ^~~~~~
main.c:137:1: error: unknown type name 'func'
  137 | func getStringArray(n int) []string {
      | ^~~~
main.c:137:21: error: unknown type name 'n'
  137 | func getStringArray(n int) []string {
      |                     ^
main.c:145:1: error: unknown type name 'func'
  145 | func abs(a int) int {
      | ^~~~
main.c:145:10: error: unknown type name 'a'
  145 | func abs(a int) int {
      |          ^
main.c:149:1: error: unknown type name 'func'
  149 | func pow(p, q int) int {
      | ^~~~
main.c:149:14: error: expected ')' before 'int'
  149 | func pow(p, q int) int {
      |              ^~~~
      |              )
main.c:153:1: error: unknown type name 'func'
  153 | func powMod(n, p int) int {
      | ^~~~
main.c:153:17: error: expected ')' before 'int'
  153 | func powMod(n, p int) int {
      |                 ^~~~
      |                 )
main.c:164:1: error: unknown type name 'func'
  164 | func min(nums ...int) int {
      | ^~~~
main.c:164:14: error: expected ')' before '...' token
  164 | func min(nums ...int) int {
      |              ^~~~
      |              )
main.c:175:1: error: unknown type name 'func'
  175 | func max(nums ...int) int {
      | ^~~~
main.c:175:14: error: expected ')' before '...' token
  175 | func max(nums ...int) int {
      |              ^~~~
      |              )
main.c:186:1: error: unknown type name 'func'
  186 | func strSearch(a []string, b string) bool {
      | ^~~~
main.c:186:16: error: unknown type name 'a'
  186 | func strSearch(a []string, b string) bool {
      |                ^
main.c:186:28: error: unknown type name 'b'
  186 | func strSearch(a []string, b string) bool {
      |                            ^
main.c:195:1: error: unknown type name 'func'
  195 | func printIntArray(array []int) {
      | ^~~~
main.c:195:20: error: unknown type name 'array'
  195 | func printIntArray(array []int) {
      |                    ^~~~~
main.c:200:1: error: unknown type name 'func'
  200 | func calcMod(x int) int {
      | ^~~~
main.c:200:14: error: unknown type name 'x'
  200 | func calcMod(x int) int {
      |              ^
main.c:204:1: error: unknown type name 'func'
  204 | func reverse(s string) string {
      | ^~~~
main.c:204:14: error: unknown type name 's'
  204 | func reverse(s string) string {
      |              ^
main.c:212:1: error: unknown type name 'func'
  212 | func isPrime(n int) bool {
      | ^~~~
main.c:212:14: error: unknown type name 'n'
  212 | func isPrime(n int) bool {
      |              ^
main.c:231:1: error: unknown type name 'func'
  231 | func contains(s []int, e int) bool {
      | ^~~~
main.c:231:15: error: unknown type name 's'
  231 | func contains(s []int, e int) bool {
      |               ^
main.c:231:24: error: unknown type name 'e'
  231 | func contains(s []int, e int) bool {
      |                        ^
main.c:240:1: error: unknown type name 'func'
  240 | func makeRange(min, max int) []int {
      | ^~~~
main.c:240:24: error: expected ')' before 'int'
  240 | func makeRange(min, max int) []int {
      |                        ^~~~
      |                        )
main.c:248:1: error: unknown type name 'func'
  248 | func powerset2(nums []int) [][]int {
      | ^~~~
main.c:248:16: error: unknown type name 'nums'
  248 | func powerset2(nums []int) [][]int {
      |                ^~~~
main.c:267:1: error: unknown type name 'func'
  267 | func copyAndAppend(nums []int, n int) []int {
      | ^~~~
main.c:267:20: error: unknown type name 'nums'
  267 | func copyAndAppend(nums []int, n int) []int {
      |                    ^~~~
main.c:267:32: error: unknown type name 'n'
  267 | func copyAndAppend(nums []int, n int) []int {
      |                                ^
main.c:274:1: error: unknown type name 'func'
  274 | func calcGcd(x, y int) int {
      | ^~~~
main.c:274:18: error: expected ')' before 'int'
  274 | func calcGcd(x, y int) int {
      |                  ^~~~
      |                  )
main.c:284:1: error: unknown type name 'func'
  284 | func getDivisor(n int) []int {
      | ^~~~
main.c:284:17: error: unknown type name 'n'
  284 | func getDivisor(n int) []int {
      |                 ^
main.c:301:1: error: unknown type name 'type'; did you mean 'typeof'?
  301 | type intHeap []int
      | ^~~~
      | typeof
main.c:301:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
  301 | type intHeap []int
      |                ^~~
main.c:307:1: error: expected declaration specifiers before 'func'
  307 | func (h intHeap) Less(i, j int) bool {
      | ^~~~
main.c:311:1: error: expected declaration specifiers before 'func'
  311 | func (h intHeap) Swap(i, j int) {
      | ^~~~
main.c:315:1: error: expected declaration specifiers before 'func'
  315 | func (h *intHeap) Push(x interface{}) {
      | ^~~~
main.c:315:37: error: expected declaration specifiers before ')' token
  315 | func (h *intHeap) Push(x interface{}) {
      |                                     ^
main.c:319:1: error: expected declaration specifiers before 'func'
  319 | func (h *intHeap) Pop() interface{} {
      | ^~~~
main.c:320:14: error: expected expression before '=' token
  320 |         old := *h
      |              ^
main.c:320:17: error: 'h' undeclared (first use in this function)
  320 |         old := *h
      |                 ^
main.c:320:17: note: each undeclared identifier is reported only once for each function it appears in
main.c: At top level:
main.c:327:1: error: unknown type name 'func'
  327 | func initHeap() *intHeap {
      | ^~~~
main.c: In function 'initHeap':
main.c:327:17: error: expected declaration specifiers before '*' token
  327 | func initHeap() *intHeap {
      |                 ^
main.c:333:1: error: expected declaration specifiers before 'func'
  333 | func (h *intHeap) pushHeap(n int) {
      | ^~~~
main.c:337:1: error: expected declaration specifiers before 'func'
  337 | func (h *intHeap) popHeap() int {
      | ^~~~
main.c:341:1: error: unknown type name 'func'
  341 | func factMod(n int) int {
      | ^~~~
main.c:341:14: error: unknown type name 'n'
  341 | func factMod(n int) int {
      |              ^
main.c:349:1: error: unknown type name 'func'
  349 | func combinationMod(n, k int) int {
      | ^~~~
main.c:349:25: error: expected ')' before 'int'
  349 | func combinationMod(n, k int) int {
      |                         ^~~~
      |                         )
main.c:357: error: expected '{' at end of input