题目描述

求给定区间 [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. JavaDailyReports10_05

    1 package varycode; 2 3 import java.util.ArrayList; 4 import java.util.Random; 5 6 public class Vary ...

  2. FileZilla使用教程

    FileZilla使用教程和问题汇总 正式开始之前我还是想闲聊几句,毕竟调试解决这些问题,整整耗了我一天半的时间.前不久学校要求上交一个web大作业,然后我们宿舍就寻思光做出来前后端搞头不大,不如整个 ...

  3. ESXi 中重新启动管理代理

    使用直接控制台用户界面 (DCUI)重启管理代理: 连接到您的 ESXi 主机的控制台. 按 F2 自定义系统. 以 root 身份登录. 使用上下箭头导航至故障排除选项>重新启动管理代理. 按 ...

  4. 本地项目上传至GitHub

    本地项目上传至GitHub 使用git上传 一.安装git 直接官网下载,安装即可. git官网下载 github下载 按照好后大概就是这个样子 二.创建公钥和私钥 有的就可跳过此步骤 我们双击打开g ...

  5. rm(操作系统的删除文件)与git rm的区别

    git rm:1.删除了一个文件2.把这个删除的文件纳入暂存区如果想要恢复这个文件,则需要做2个操作a.git reset HEAD file_name --将文件从暂存区恢复到工作区b.git ch ...

  6. Atcoder abc187 F Close Group(动态规划)

    Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动 ...

  7. SpringSecurity配置文件

    @EnableWebSecurity public class seccurityConfig extends WebSecurityConfigurerAdapter { @Override pro ...

  8. 第一章节 BJROBOT ROS 网络配置及移动控制【ROS全开源阿克曼转向智能网联无人驾驶车】

    版权声明:该教程版权归北京智能佳科技有限公司所有,未经公司授权禁止引用.发布.转载等,否则将追究其法律责任. 使用前说明:本使用文档说明略微简明,请结合指导视频进行操作会更容易理解!! 第一章节 BJ ...

  9. idea或者java远程提交spark任务到yarn,Exception1

    spark通過idea远程提交job到yarn: Caused by: java.lang.ClassCastException: cannot assign instance of scala.co ...

  10. [ABP教程]第六章 作者:领域层

    Web开发教程6 作者:领域层 关于此教程 在这个教程系列中,你将要构建一个基于ABP框架的应用程序 Acme.BookStore.这个应用程序被用于甘丽图书页面机器作者.它将用以下开发技术: Ent ...