P1831 杠杆数(数位Dp)
题目描述
如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数。
比如$4139$就是杠杆数,把3当成支点,我们有这样的等式:$4 \times 2 + 1\times 1 = 9 \times 1$。
给定区间$[x,y]$,求出在$[x,y]$中有几个杠杆数。
输入格式
两个数,表示$x,y$。
输出格式
一个输出,表示区间$[x,y]$中杠杆数的个数。
样例数据
输入
7604 24324
输出
897
分析
求$[1,x]$这个区间内符合条件的数的个数。因为$[x,y]$中符合条件的个数可以转化为$[1,y]$区间内的个数减去$[1,x-1]$区间内的个数,然后枚举支点位置,求$[1,x]$中以当前为支点的满足条件的个数
代码
#include <bits/stdc++.h>
#define Space putchar(' ')
#define Enter puts("")
#define MAXN 100010
#define int long long
using namespace std;
typedef long long ll;
typedef double Db;
inline ll Read()
{
ll Ans = 0;
char Ch = getchar() , Las = ' ';
while(!isdigit(Ch))
{
Las = Ch;
Ch = getchar();
}
while(isdigit(Ch))
{
Ans = (Ans << 3) + (Ans << 1) + Ch - '0';
Ch = getchar();
}
if(Las == '-')
Ans = -Ans;
return Ans;
}
inline void Write(ll x)
{
if(x < 0)
{
x = -x;
putchar('-');
}
if(x >= 10)
Write(x / 10);
putchar(x % 10 + '0');
}
int Left , Right;
int Dp[20][20][3000] , Number[MAXN];
int DFS(int Position , int x , bool Flag , bool Limit , int Num)
{
if(!Position)
return Num == 0;
if(!Limit && Dp[Position][x][Num] != -1)
return Dp[Position][x][Num];
int MAX = Limit ? Number[Position] : 9 , Ans = 0;
for(int i = 0; i <= MAX; i++)
{
if(Flag)
Ans += DFS(Position - 1 , x , Flag && i == 0 ,
Limit && i == MAX , i * (Position - x));
else
Ans += DFS(Position - 1 , x , Flag && i == 0 ,
Limit && i == MAX , Num + i * (Position - x));
}
if(!Limit)
Dp[Position][x][Num] = Ans;
return Ans;
}
inline int Solution(int x)
{
int Count = 0 , Ans = 0;
while(x)
{
Number[++Count] = x % 10;
x /= 10;
}
for(int i = 1; i <= Count; i++)
Ans += DFS(Count , i , 1 , 1 , 0);
return Ans - Count + 1;
}
signed main()
{
Left = Read() , Right = Read();
memset(Dp , -1 , sizeof(Dp));
if(!Left)
Write(Solution(Right));
else
Write(Solution(Right) - Solution(Left - 1));
return 0;
}
P1831 杠杆数(数位Dp)的更多相关文章
- 洛谷P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- 【BZOJ-1026】windy数 数位DP
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5230 Solved: 2353[Submit][Sta ...
- CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- bzoj 1026 [SCOI2009]windy数 数位dp
1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- 【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
挺好的数位dp……先说一下我个人的做法:经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所有数 ...
- 洛谷P2657 [SCOI2009]windy数 [数位DP,记忆化搜索]
题目传送门 windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个win ...
随机推荐
- lombok,Invalid byte tag in constant pool: 19
今天偶到一个奇怪的问题: 三台生产服务器部署同样的代码,同样的tomcat ,jdk等环境. 其中有一台服务器启动时报lombok-1.18.6.jar! Invalid byte tag in ...
- 一行代码解决JS数字大于2^53精度错误的问题
服务端使用长整型(Int64)的数字,在浏览器端使用JS的number类型接收时,当这个实际值超过 (2^53-1)时,JS变量的值和实际值就会出现不相等的问题.常见场景比如使用雪花算法生成Id. 在 ...
- Linux的三剑客
首先,需要介绍一下管道和正则表达式,因为它经常和Linux三剑客一起使用. 一.管道Linux 提供管道符"|",将两个命令隔开,管道符左边命令的输出作为管道符右边命令的输入. c ...
- OpenCV on Mac OSX: A step-by-step guide
I'm using OpenCV for my 4th year design project and setting it up was a huge pain. I had to look thr ...
- Linux性能调优命令之free
功能说明 free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存.共享内存将被忽略 语法 free [参数] 参数 -b : 以Byte为单位显示内存使用情况 ...
- ES6中的Set和Map对象数据结构
set对象数据结构 构建某一类型的对象 -对象的实例化 let arr = [1, 2, 3, 3, 4, 5] let rec = new Set(arr)//可以传参数,数组或者对象 consol ...
- 使用ldap客户端创建zimbra ldap用户的格式
cat << EOF | ldapadd -x -W -H ldap://:389 -D "uid=zimbra,cn=admins,cn=zimbra" dn: ui ...
- [bug] Authentication failed for token submission (认证失败)异常
原因 gitee上下的项目,启动后能访问首页,但登录报错.原因是根据用户名上数据库查密码没有得到结果,中间任何环节有问题都可能导致,我的是因为mapper.xml中的<mapper namesp ...
- [bug] PyCharm远程Spark集群:Java gateway process exited before sending its port number
原因 无法连接到集群上的java 解决 方法一: 在右上角Edit Configurations中,添加一条环境变量JAVA_HOME,值为远程机器上的java安装路径 方法二: 直接在代码里写上JA ...
- RHEL高级磁盘管理—Stratis
2. Stratis 本地存储管理工具,通过Stratis可以便捷的使用Thin Provisioning.Snapshots.Pool-based的管理和监控等高级存储功能. Stratis 基于x ...