URAL 1057 (数位dp)
来源:互联网 发布:条码追溯软件 编辑:程序博客网 时间:2024/05/21 11:01
问题描述:
Create a code to determine the amount of integers, lying in the set [ X; Y] and being a sum of exactly K different integer degrees of B.
Example. Let X=15, Y=20, K=2, B=2. By this example 3 numbers are the sum of exactly two integer degrees of number 2:
17 = 2^ 4+2^0,
18 = 2^4+2^1,
20 = 2^4+2^2.
18 = 2^4+2^1,
20 = 2^4+2^2.
The first line of input contains integers X and Y, separated with a space (1 ≤ X ≤ Y ≤ 2 31−1). The next two lines contain integers K and B (1 ≤ K ≤ 20; 2 ≤ B ≤ 10).
Output
Output should contain a single integer — the amount of integers, lying between Xand Y, being a sum of exactly K different integer degrees of B.
Example
15 20
2
2
3
题目题意:题目给我们了一个区间,问这个区间内有多少个数可以被表示成B^(a1)+B^(a2)+....B^(ak) 且(a1!=a2!=...!=ak)这种形式.
题目分析:先看一下这个分析报告吧!点击打开链接
然后看看这个大神的博客点击打开链接
鶸鸡努力中
代码如下:
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>using namespace std;const int maxn=35;int f[maxn][maxn];int X,Y,k,b;void init(){ f[0][0]=1; for (int i=1;i<=32;i++) { f[i][0]=f[i-1][0]; for (int j=1;j<=i;j++) { f[i][j]=f[i-1][j]+f[i-1][j-1]; } }}int solve(int n){ int a[100],len=0,cnt=0,ans=0; while (n) { a[len++]=n%b; n=n/b; } for (int i=len-1;i>=0;i--) { if (a[i]==1) { ans+=f[i][k-cnt]; cnt++; if (cnt==k) break; } else if (a[i]>1){ ans+=f[i+1][k-cnt]; break; } } if (cnt==k) ans++; return ans;}int main(){ init(); while (scanf("%d%d%d%d",&X,&Y,&k,&b)!=EOF) { printf("%d\n",solve(Y)-solve(X-1)); } return 0;}
阅读全文
0 0
- URAL 1057 数位DP
- URAL 1057 数位DP
- URAL 1057 数位DP
- URAL 1057 (数位dp)
- URAL 1057 数位DP(递归)
- ural 1057(数位dp)
- [数位dp] ural 1057 Amount of Degrees
- ural 1057 Amount of Degrees(数位DP)
- ural 1057 Amount of degrees 【数位dp】
- 【URAL】1057 Amount of Degrees 数位DP
- URAL 1057 Amount of Degrees (数位dp)
- 数位DP-URAL-1057-Amount of Degrees
- 【URAL 1057】 Amount of Degrees 【数位DP】
- 【数位DP】URAL 1057 Amount of Degrees
- URAL 1057 Amount of Degrees(数位dp)
- URAL 1057 Amount of Degrees 数位DP *
- URAL - 1057 Amount of Degrees--数位dp
- URAL 1057 Amount of Degrees 数位dp
- Multi-task Learning
- OpenGL超级宝典第五版 Windows + VS2013配置
- UGUI Text首行缩进取巧办法
- leetcode weekly contest 61(739. Daily Temperatures)
- 百度地图------百度infowindow重影问题记录我的
- URAL 1057 (数位dp)
- openCV学习笔记(四)--图像的几何变换Geometric Transformations of Images
- 之前在JVM菜鸟进阶高手之路
- entrySet keySet
- 三分钟了解Activity工作流
- 负载均衡器技术Nginx和F5的优缺点
- php中var_export与var_dump的区别分析
- 研发项目成本计算方法以及工作量评估
- 欢迎使用CSDN-markdown编辑器