思路:数位DP+构造,先dp[i][j]表示i位总和为j的情况数,然后两种情况分别去进行数位DP,按高位往低位放去构造即可
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int q, x, y, b, m, k;
int bit[35], bn, dp[35][305];
void get(int x) {
bn = 0;
if (!x) bit[bn++] = 0;
while (x) {
bit[bn++] = x % b;
x /= b;
}
}
int cal1(int x) {
if (x == -1) return 0;
get(x);
int ans = 0, sum = m;
for (int i = bn; i; i--) {
for (int x = 0; x &l......
阅读全文