算法题 数位DP-度的数量(Python)

该博客探讨了一种算法问题,要求在指定区间[X,Y]内找到恰好由K个不同B的整数次幂之和组成的整数数量。通过Python实现数位动态规划方法,解决这个问题。例如,当X=15,Y=20,K=2,B=2时,有17, 18和20三个数满足条件。博客提供了输入输出格式和数据范围,并给出代码实现。" 102647766,8408796,PyMySQL与Django ORM实战指南,"['Python', '数据库开发', 'Django框架', 'ORM框架', '数据库配置']
摘要由CSDN通过智能技术生成

题目

求给定区间 [X,Y]中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 BB 的整数次幂之和。

例如,设 X=15,Y=20,K=2,B=2,则有且仅有下列三个数满足题意:

17=2^4+2^0
18=2^4+2^1
20=2^4+2^2

输入格式

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

输出格式

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

数据范围

1≤X≤Y≤2^31−1
1≤K≤20
2≤B≤10

输入样例:

15 20
2
2

输出样例:

3

代码

L, R = map(int, input().split())
K = int(input())
B = int(input())
C = [[0] * 32 for _ in range(32)]

for i in range(32):
    for j in range(i+1):
        if j == i: C[i][j] = 1
        else: C[i][j] = C[i-1][j] + C[i-1][j-1]
        
def dp(n):
    if n == 0: return 0
    A = []
    res = 0
    last = 0 #
    # 将n转为B进制的数
    while n:
        A.append(n % B)
        n //&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值