首先我们知道(a + b + c +……+ n)% k = a % k + b % k + …… + n % k,这样原来10000的氛围可以减小到100,定义状态f[i][j]表示前i个数字能够出现数字j,状态转移方程:若f[i - 1][j]为真,则f[i][(j - 100 + Digit[i]) % k + 100] = 1; f[i][(j - 100 - Digit[i]) % k + 100] = 1;最后判断f[n - 1][100]是否为真。注意第一个数字前边不能加符号,所以要单独处理。
程序代码: