题目描述

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

输入格式

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

输出格式

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

样例

样例输入

15 20
2
2

样例输出

3

数据范围与提示

对于全部数据,1≤X≤Y≤2^31−1,1≤K≤20,2≤B≤10。

______________________________________________________________________________________________

数位动归

一类区间统计问题,区间较大,无法用暴力求解或组合数学求解。

常见为求区间内满足某类条件的X进制数的个数。条件往往与数位有关。

此题:

首先,区间具有相减的性质。count[i...j]=count[ 0...j ] - count[ 0...i-1 ]。

这样问题就变成了0到i的x进制数有多少个满足条件。

因为是互不相等的k进制数,所以,转成k进制后,每个位上要么是0要么是1。

这样f[i][j]表示长度I的2进制数,有j个1的种类

f[i][j]=f[i-1][j]+f[i-1][j-1]

______________________________________________________________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int x,y,k,b;
4 int wei[32];
5 int f[32][32];
6 void prech(int &x,int b)
7 {
8 int js=0;
9 while(x>0)
10 {
11 wei[++js]=x%b;
12 x/=b;
13 }
14 while(js>0)
15 {
16 if(wei[js]==1)x^=1<<(js-1);
17 else if(wei[js]>1)
18 {
19 for(int i=js;i>0;--i)x^=1<<(i-1);
20 break;
21 }
22 --js;
23 }
24 }
25 void dp()
26 {
27 f[0][0]=1;
28 for(int i=1;i<=31;++i)
29 {
30 f[i][0]=f[i-1][0];
31 for(int j=1;j<=i;++j)f[i][j]=f[i-1][j]+f[i-1][j-1];
32 }
33 }
34 int work(int x,int k)
35 {
36 int js=0,ans=0;
37 for(int i=31;i>0;--i)
38 {
39 if(x&(1<<i))
40 {
41 ++js;
42 if(js>k)break;
43 x=x^(1<<i);
44 }
45 if((1<<(i-1))&x)ans+=f[i-1][k-js];
46 }
47 if(js+x==k)ans++;
48 return ans;
49 }
50 int main()
51 {
52 scanf("%d%d%d%d",&x,&y,&k,&b);
53 x--;
54 prech(x,b);prech(y,b);
55 dp();
56 cout<<work(y,k)-work(x,k);
57 return 0;
58 }

LOJ10163 Amount of Degrees的更多相关文章

  1. 【数位DP】[LOJ10163]Amount of Degrees

    发现自己以前对数位DP其实一窍不通... 这题可以做一个很简单的转换:一个数如果在$b$进制下是一个01串,且1的个数恰好有k个,那么这个数就是合法的(刚开始没判断必定是01串,只判断了1的个数竟然有 ...

  2. [TimusOJ1057]Amount of Degrees

    [TimusOJ1057]Amount of Degrees 试题描述 Create a code to determine the amount of integers, lying in the ...

  3. 一本通1585【例 1】Amount of Degrees

    1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB 题目描述 原题来自:NEERC 2000 Central Subr ...

  4. Timus Online Judge 1057. Amount of Degrees(数位dp)

    1057. Amount of Degrees Time limit: 1.0 second Memory limit: 64 MB Create a code to determine the am ...

  5. [ACM] ural 1057 Amount of degrees (数位统计)

    1057. Amount of Degrees Time limit: 1.0 second Memory limit: 64 MB Create a code to determine the am ...

  6. Ural Amount of Degrees(数位dp)

    传送门 Amount of Degrees Time limit: 1.0 secondMemory limit: 64 MB Description Create a code to determi ...

  7. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB提交数: 130     通过数: 68 [ ...

  8. [ural1057][Amount of Degrees] (数位dp+进制模型)

    Discription Create a code to determine the amount of integers, lying in the set [X; Y] and being a s ...

  9. URAL 1057 Amount of Degrees (数位dp)

    Create a code to determine the amount of integers, lying in the set [X;Y] and being a sum of exactly ...

随机推荐

  1. [Deep Learning] 神经网络编程基础 (Basics of Neural Network Programming) - 逻辑回归-梯度下降-计算图

    在神经网络中,假如有m个训练集,我们想把他们加入训练,第一个想到得就是用一个for循环来遍历训练集,从而开始训练.但是在神经网络中,我们换一个计算方法,这就是 前向传播和反向传播. 对于逻辑回归,就是 ...

  2. Qt学习笔记-启动一个额外的应用程序-获取输入的回车信号

    现在让我们的程序模拟windows下的运用程序. 在命令行中输入命令.点击确定即可运行系统中的程序. 添加头文件#include <QProcess> 在确定按钮的响应函数中写上功能要求. ...

  3. 【WPF】 问题总结-RaidButton修改样式模板后作用区域的变化

    最近工作需要,需要重绘RaidButton控件,具体想要达成的的效果是这样的: 当点击按钮任意一个地方的时候,按钮的背景改变. 于是我是这样对控件模板进行修改的: <Style x:Key=&q ...

  4. 如何定位CPU瓶颈?

    CPU是通常大家最先关注的性能指标,宏观维度有核的CPU使用率,微观有函数的CPU cycle数,根据性能的模型,性能规格与CPU使用率是互相关联的,规格越高,CPU使用率越高,但是处理器的性能往往又 ...

  5. 我是这样理解EventLoop的

    我是这样理解EventLoop的 一.前言   众所周知,在使用javascript时,经常需要考虑程序中存在异步的情况,如果对异步考虑不周,很容易在开发中出现技术错误和业务错误.作为一名合格的jav ...

  6. 【Flutter】功能型组件之对话框详解

    前言 对话框本质上也是UI布局,通常一个对话框会包含标题.内容,以及一些操作按钮,为此,Material库中提供了一些现成的对话框组件来用于快速的构建出一个完整的对话框. 接口描述 // 1. Ale ...

  7. LeetCode53 最大子序列问题

    题目描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和.     示例:     输入: [-2,1,-3,4,-1,2,1,-5,4],   ...

  8. 基于 MapReduce 的单词计数(Word Count)的实现

    完整代码: // 导入必要的包 import java.io.IOException; import java.util.StringTokenizer; import org.apache.hado ...

  9. Loadrunner与kylinPET的能力对比测试--web动态请求

    概述 在<性能测试工具选择策略--仿真度对比测评分析报告>一文详细分析了使用相同的web页面,分别使用LoadRunner,Jmeter,kylinTOP工具进行录制脚本并执行得出在静态请 ...

  10. PC个人隐私保护小方法

    前言 近期爆出了腾讯读取用户浏览器浏览记录的消息.话不过说直接上图,懂的自然懂. 网上也有详细的分析文章,不管它读取后用来做什么,在你不知情的情况下读取了你的浏览器浏览记录,你说气不气. 虽然在整体大 ...