http://acm.bnu.edu.cn/v3/contest_show.php?cid=9208#problem/J

【AC】

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll N,K;
ll dp[][];
ll cnt[];
int sumdigit(ll x)
{
int tot=;
while(x)
{
tot+=x%;
x/=;
}
return tot;
}
int digit[];
int split(ll x)
{
int ret=;
while(x)
{
digit[++ret]=x%;
x/=;
}
reverse(digit+,digit++ret);
return ret;
} void Dp(int len)
{
memset(dp,,sizeof(dp));
//从高位到低位递推
for(int i=;i<digit[];i++)//最高位
{
dp[][i]=;
}
int sum=digit[];
for(int i=;i<=len;i++)
{
for(int j=;j<;j++)
{
if(dp[i-][j])//不为0才有贡献
for(int tran=;tran<;tran++)//从高到底第i位
{
if(j+tran<)
{
dp[i][j+tran]+=dp[i-][j];
}
}
}
for(int j=;j<=;j++) dp[i][j]++;//因为初始化dp[1][i]时dp[1][0]为0,所以要补上000..j这种情况
for(int j=;j<digit[i];j++) dp[i][sum+j]++;//因为初始化dp[1][digit[1]]为0,所以要补上只有第i位不同的情况
sum+=digit[i];
}
dp[len][sum]++;//算的是小于等于x的数,要加上本身
} ll cal(ll X,int sum,int type)
{
int len=split(X);
Dp(len);
if(type==)//[1,X]中位数和小于sum的总数
{
ll ans=;
for(int i=;i<sum;i++)
{
ans+=dp[len][i];
}
return ans;
}
else //[1,x]中位数和恰好为sum的总数
{
return dp[len][sum];
}
} ll solve(ll X,ll k)
{
int len=split(X);
Dp(len);
for(int i=;i<;i++)
{
cnt[i]=dp[len][i];
}
for(int i=;i<;i++)
{
cnt[i]+=cnt[i-];
}
ll pos=lower_bound(cnt+,cnt+,k)-cnt;
k-=cnt[pos-];
ll l=,r=1e18;
while(l<=r)
{
ll mid=(l+r)>>;
if(cal(mid,pos,)<k)
{
l=mid+;
}
else
{
r=mid-;
}
}
return l;
}
int main()
{
while(~scanf("%I64d%I64d",&N,&K))
{
cout<<cal(N,sumdigit(K),)+cal(K,sumdigit(K),)<<" ";
cout<<solve(N,K)<<endl;
}
return ;
}

数位DP

【数位DP】bnuoj 52813 J. Deciphering Oracles的更多相关文章

  1. Tsinsen A1516. fx 数位dp

    题目: http://www.tsinsen.com/A1516 A1516. fx 时间限制:2.0s   内存限制:256.0MB    总提交次数:164   AC次数:72   平均分:51. ...

  2. BZOJ 3209: 花神的数论题 [数位DP]

    3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f ...

  3. BZOJ_1833_[ZJOI2010]count 数字计数_数位DP

    BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...

  4. [bzoj1833][ZJOI2010]数字计数(数位DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...

  5. Hdu Bomb(数位DP)

    Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submiss ...

  6. 「算法笔记」数位 DP

    一.关于数位 dp 有时候我们会遇到某类问题,它所统计的对象具有某些性质,答案在限制/贡献上与统计对象的数位之间有着密切的关系,有可能是数位之间联系的形式,也有可能是数位之间相互独立的形式.(如求满足 ...

  7. BNUOJ 52325 Increasing or Decreasing 数位dp

    传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...

  8. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers (数位dp)

    题目链接:https://ac.nowcoder.com/acm/contest/163/J 题目大意:给定一个数N,求区间[1,N]中满足可以整除它各个数位之和的数的个数.(1 ≤ N ≤ 1012 ...

  9. The 2018 ACM-ICPC上海大都会赛 J Beautiful Numbers (数位DP)

    题意:求小于等于N且能被自己所有位上数之和整除的数的个数. 分析:裸的数位dp.用一个三位数组dp[i][j][k]记录:第i位,之前数位之和为j,对某个mod余数为k的状态下满足条件的个数.这里mo ...

随机推荐

  1. 洛谷 P2910 [USACO08OPEN]寻宝之路Clear And Present Danger

    题目描述 Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) islands ...

  2. ubuntu16.0 安装 openstack

    主要参考官方文档:https://docs.openstack.org/liberty/zh_CN/install-guide-ubuntu/environment-nosql-database.ht ...

  3. com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /192.168.1.13:20881, cause: Failed to bind to: /0.0.0.0:20881

    抛出的异常如上,解决方案是:根据异常信息确定是端口被占用,排查项目是否启动之后没有关闭,在windows命令行中运行如下命令:netstat -ano 检查端口占用的情况,根据pid在任务管理器中杀死 ...

  4. root.sh脚本支持checkpoints文件实现重复运行

    安装集群GRID/GI一般包括三个过程:首先,运行OUI/RunInstaller输入集群配置信息,其次,拷贝/编译集群文件,最后,以root用户运行root.sh脚本配置集群/启动集群,其中运行ro ...

  5. HTML5资源汇总(更新游戏引擎cocos2d-html5)

    我也是现学现用,想了解的可以看看效果,想知道实现的也有源码 http://cocos2d-html5.org Cocos2d-HTML5 API和Cocos2d-x一致,同样的代码可以支持cocos2 ...

  6. JS与JQ 获取页面元素值的方法和差异对比

    获取浏览器高度和宽度 document.documentElement.clientWidth ==> 浏览器可见区域宽度 document.documentElement.clientHeig ...

  7. 团队作业-Beta冲刺第二天

    这个作业属于哪个课程 <https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1> 这个作业要求在哪里 <https ...

  8. kmp 模板

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<algorithm> ...

  9. mac 上node.js环境的安装与测试【转】

    http://blog.csdn.net/baihuaxiu123/article/details/51868142 一 摘要 如何大家之前做过web服务器的人都知道,nginx+lua与现在流行的n ...

  10. Springboot 命令注入属性[--]&[-D]

    场景 在用Jenkins,做自动化部署时,遇到一些命令问题. 需要通过命令的形式,注入些业务值. -D 系统属性注入 Java,启动jar 命令: java [ options ] -jar file ...