列表

详情


NC50516. Amount of Degrees

描述

求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和。例如,设X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意:

输入描述

第一行包含两个整数X和Y,接下来两行包含整数K和B。

输出描述

只包含一个整数,表示满足条件的数的个数。

示例1

输入:

15 20
2
2

输出:

3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 8ms, 内存消耗: 396K, 提交时间: 2022-04-15 16:11:51

#include<iostream>
using namespace std;
typedef long long ll;
int l, r, k, b, ans;
void dfs(int c, int num, int p) {
    if(c == k) {
        if(num >= l) ++ans;
        return;
    }
    for(ll tp = c ? p * b : 1; num + tp <= r; tp *= b)
        dfs(c + 1, num + tp, tp);
}
int main() {
    cin >> l >> r >> k >> b;
    dfs(0, 0, 0);
    cout << ans << endl;
    return 0;
}

上一题