传送门 太菜了!一直不敢开二维数组打表,笨啊!!
 题意:给出一个整数N和进制b,让你分解对应整数进制的每一位,使之相加,求前N个数的每个数对应的进制相加的和。
 思路;按题意模拟。注意数据需要打表,不然超时。
 题解 代码:
代码:
//#define N 100010
using namespace std;
const ll maxn = 1e6 + 5;
const ll minn = 1e9 + 5;
const ll mod = 1000000007;
//ll a[maxn], b[maxn];
//bool vis[maxn];
int ans[maxn];
vector<int>v[maxn];
bool row[maxn], col[maxn];
//bool vis[maxn][maxn][2];
bool flag = 0;
int sum[maxn][10];
int bit(int x, int zj) {
    int t;
    int Sum = sum[x-1][zj];
        while(x) {
            t = x % zj;
            Sum += t;
            x = x / zj;
        }
    return Sum;
}
int main() {
    int N, b, T;
    cin >> T;
    int cnt = 0;
    for(int i = 2; i <= 10; i++)
        for(int j = 1; j <= 1000000; j++)
            sum[j][i] = bit(j, i);//打表,开二维数组存。
    while(T--) {
        ll ans = 0;
        cin >> N >> b;
        printf("Case #%d: ", ++cnt);
        printf("%d\n",sum[N][b]);
        }
    return 0;
}                
                










