題意:一些火柴,問你能組成整除m最大的數字是多少。
思路:dp[i][j]表示用i根火柴,組成%m餘數為j的最大數字,末尾多一個數字k的狀态就是dp[i + num[k]][(j * 10 + k) % m],由于最多可能50位數,是以要用高精度。
注意一個優化點,由于高精度的計算上隻需要乘10+k,正常的高精度乘法複雜度還是有點高會逾時,是以用數組去模拟,每次*10 + k的時候就往後多一位即可。
代碼:
題意:一些火柴,問你能組成整除m最大的數字是多少。
思路:dp[i][j]表示用i根火柴,組成%m餘數為j的最大數字,末尾多一個數字k的狀态就是dp[i + num[k]][(j * 10 + k) % m],由于最多可能50位數,是以要用高精度。
注意一個優化點,由于高精度的計算上隻需要乘10+k,正常的高精度乘法複雜度還是有點高會逾時,是以用數組去模拟,每次*10 + k的時候就往後多一位即可。
代碼: