傳送門
設f(i)表示[i..n]組成的十進制數在模p意義下的值 那么f(i)-f(j)(j>i)就表示了[i..j-1]這一段區間表示的十進制數擴大10的若干次冪之后在模p意義下的值 如果不考慮質數2和5的話,擴大10的若干次冪是不應響結果的,因為剩余的質數都不是10的約數 那么如果要統計區間[l..r]有多少個子串滿足是p的倍數的話,只需要統計f(l)..f(r+1)這些數中有多少對數相同就行了 將f(i)離散化之后搞一個計數器然后直接莫隊就行了 然后特判一下2和5的情況,因為擴大了10的若干次冪,相當于加了若干個質因子2和5,不能像上面那樣求 但是其實2和5的情況更簡單 若p=2/5,如果某一個位上的數是能整除p,那它的后綴都是p的倍數都可以計算 然后搞一個前綴和每次查詢的時候減一下就行了
新聞熱點
疑難解答