景気付けにどうぞ

お題:
(1)0〜9からなる文字列Sが与えられるので、Sの部分文字列の中で3の倍数が全部でいくつあるか求めよ。
(2)同様に、与えられたSの中に7の倍数が全部でいくつあるか求めよ。

例:
(1)30123 -> 7 (3の倍数は3,3,12,30,123,3012,30123の7つ)
(2)30123 -> 1 (7の倍数は301の1つ)

制約:
1≦Sの長さ≦5万