鑑於十進制數字組成的字符串數整除的子序列數目,我有6有效的算法由6
1 ≤ value of String ≤ 10^6
找到除盡所有的子序列的號碼,我已經試過遍歷的簡單方法所有可能的子序列並獲得答案,但這不夠快,特別是對於字符串長度有如此巨大的上限。然後我嘗試了DP方法,但無法對給定範圍的DP解決方案進行編碼。有人可以提供這個問題的任何領導?
Sample Input
1232
Output
3
Strings Possible - 12,12,132
//Ans should be modulo 10^9 + 7
下面是發現亞由3.Now整除總數檢查6 DP代碼(不完全確定它),我們還需要通過2這是創建問題納入整除我。
for(i=0 ; i<n ; i++) {
for(j=0 ; j<3 ; j++) {
dp[i][j]=0 ;
}
int dig = (str[i]-'0')%3 ;
dp[i][dig]++ ;
if(i>0) {
for(j=0 ; j<3 ; j++) {
if(dig % 3 == 0) {
dp[i][j] += dp[i-1][j];
}
if(dig % 3 == 1) {
dp[i][j] += dp[i-1][(j+2)%3];
}
if(dig % 3 == 2) {
dp[i][j] += dp[i-1][(j+1)%3];
}
}
}
}
long long ans = 0;
for(i=0 ; i<n ; i++) {
ans += dp[i][0] ;
}
return ans;
你可以粘貼一些代碼,告訴我們你到目前爲止所嘗試過的,以便我們可以幫助你。 –
您確定字符串長度可以是10⁶,或者是字符串*代表的值*限制爲那個嗎? – trincot
@SeekAddo先生,我已經添加了我的代碼。 –