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 ...
随机推荐
- ES6新增常用方法
字符串新增方法 padStart.padEnd 如果原字符串不够指定长度,则会在左侧(右侧)填充字符串,用以补全 padStart( length: number, fillStr?: string ...
- Java项目中每一个类都可以有一个main方法
Java项目中每一个类都可以有一个main方法,但只有一个main方法会被执行,其他main方法可以对类进行单元测试. public class StaticTest { public static ...
- 不同规模的企业对CRM的需求是否相同?
CRM客户管理系统在我们的认知中往往是中大型企业的选择.如今,越来越多中小规模企业开始使用CRM系统.CRM的功能随着发展变得越来越实用,可以满足不同行业不同业务规模的企业的需求.同时,CRM功能类型 ...
- CRM帮助B2B企业持续改善战略决策「上篇」
数据一直都是企业和客户的热点话题.客户期望得到更加个性化的感受,企业则期望使用数据来持续改善战略决策和给予更好的服务 B2B企业如何更合理地利用客户资料: 数据采集 长期以来,B2C行业的企业都是通过 ...
- Go - 开箱即用,WEB 界面一键安装,没有项目经验,可以拿这个练手
安装界面 启动程序之后,会在浏览器中自动打开安装界面. 因为程序会使用到 Redis 和 MySQL,所以安装前请输入 Redis.MySQL 配置信息,点击初始化按钮,会将用到的数据表和默认数据进行 ...
- Arduino杀手在此!!ESP 8266 NodeMCU小白手把手入门(二)(解惑篇)
上一次更新主要是简单介绍了NodeMCU的基本知识并且进行了一次简单的实操演示,最近有一些读者向我提出了一些小问题,所以决定出一期解惑篇,主要针对的是基础知识不是太牢固,或是喜欢刨根问底的小可爱们.里 ...
- WPF 使用附加属性声明 ICommand
一.ListBox中为什么选择同一项不能每次都触发SelectionChanged事件呢? 当我需要每次点击ListBox的选中项,都触发事件.找到最符合的事件为SelectionChanged事 ...
- vipivp常用linux命令
基础安装 # CentOS sudo yum install epel-release 命令行Tips 进程及端口 # 查看端口占用情况 netstat -ap | grep 端口号 # 查看某一 ...
- Python菜鸟100例
题目地址 #-*- codeing = utf-8 -*- #@Time : 2021/3/18 21:17 #@Author : HUGBOY #@File : 1.py #@Software: P ...
- ltp 测试流程及测试脚本分析
LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...