洛谷P1831 杠杆数
P1831 杠杆数
题目描述
如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数。
比如4139就是杠杆数,把3当成支点,我们有这样的等式:4 2 + 1 1 = 9 * 1。
给定区间[x,y],求出在[x,y]中有几个杠杆数。
输入输出格式
输入格式:
两个数,表示x,y。
输出格式:
一个输出,表示区间[x,y]中杠杆数的个数。
输入输出样例
7604 24324
897
说明
对于40%的数据,x<=y<=x+100000
对于100%的数据,1<=x<=y<=10^18
#include<iostream>
#include<cstdio>
using namespace std;
long long l,r,ans;
int a[];
bool check(long long now){
int len=;
while(now){
a[++len]=now%;
now/=;
}
int L=,R=;
for(int i=;i<=len;i++){//枚举支点
L=;R=;
for(int j=;j<i;j++)L+=(i-j)*a[j];
for(int j=i+;j<=len;j++)R+=(j-i)*a[j];
if(L==R)return ;
}
return ;
}
int main(){
scanf("%lld%lld",&l,&r);
for(long long i=l;i<=r;i++){
if(check(i))ans++;
}
cout<<ans;
}
40分 暴力(枚举每个数再枚举支点)
/*
数位dp,写的记忆化搜索
应该算数位dp中的简单题吧,套路都在
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long a,b,dp[][][];
int bit[],len;
long long dfs(int pos,int central,int pre,int limit){
if(pos<=)return pre==;
if(pre<)return ;
if(!limit&&dp[pos][central][pre]!=-)return dp[pos][central][pre];
int end=limit?bit[pos]:;
long long ans=;
for(int i=;i<=end;i++){
ans+=dfs(pos-,central,pre+i*(pos-central),limit&&i==end);
}
if(!limit)dp[pos][central][pre]=ans;
return ans;
}
long long solve(long long x){
len=;
while(x){
bit[++len]=x%;
x/=;
}
long long ans=;
for(int i=;i<=len;i++)ans+=dfs(len,i,,);
return ans-len+;
}
int main(){
memset(dp,-,sizeof(dp));
scanf("%lld%lld",&a,&b);
printf("%lld",solve(b)-solve(a-));
}
100分 数位dp
洛谷P1831 杠杆数的更多相关文章
- P1831 杠杆数
P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- 洛谷P1288 取数游戏II(博弈)
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...
- 洛谷 P1392 取数
题面 在做这道题前,先要会他的弱化版(实际一模一样,只是愚蠢的洛谷评测级别差了一档(睿智如姬无夜)) ----------------------------------弱化版------------ ...
- 洛谷——P2421 A-B数对(增强版)
题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈. 题目描述 给出N 个从小到大排好序的整 ...
- 洛谷 P5206 - [WC2019]数树(集合反演+NTT)
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(E_1,E_2\) 而言,为它们填上 \(1\sim y\) 使其合法的方案数显然是 \(y\) 的 \(E_1 ...
- 【题解】洛谷P3166 [CQOI2014] 数三角形(组合+枚举)
洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的 ...
- P1831 杠杆数(数位Dp)
题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如$4139$就是杠杆数,把3当成支点,我们有这样的等式:$4 \ ...
- 洛谷P1288 取数游戏II[博弈论]
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...
随机推荐
- matplotlib和numpy 学习笔记
1. 在二维坐标系中画一个曲线 import matplotlib.pyplot as plt #data len=400, store int value data = [] #set x,y轴坐标 ...
- (KEILv5)使用matlab绘制从KEIL memory导出的内存数据
使用matlab绘制从KEIL memory导出的内存数据 如标题,某些时候我们需要分析keil调试过程中的数据,比如从I2S.SPI.I2C或者UART获取到的波形数据,这些数据时数字流,通过逻辑分 ...
- CSS+HTML+JQuery简单菜单
1. [代码]style <style type="text/css"> body,ul,li,a{ margin:0; paddin ...
- Lucene默认的打分算法——ES默认
改变Lucene的打分模型 随着Apache Lucene 4.0版本在2012年的发布,这款伟大的全文检索工具包终于允许用户修改默认的基于TF/IDF原理的打分算法.Lucene API变得更加容易 ...
- [原创]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- C/C++协程的实现方式总结
1.利用 C 语言的 setjmp 和 longjmp,函数中使用 static local 的变量来保存协程内部的数据. 函数原型:int setjmp(jmp_buf envbuf); void ...
- 前端多媒体(1)——获取摄像头&麦克风
捕获视频/音频 PPT地址 长久以来,音频/视频捕获都是网络开发中的"圣杯".多年来,我们总是依赖于浏览器插件(Flash 或 Silverlight)实现这一点. 依靠 WebR ...
- bytearray类型
bytearray类型是python中的二进制数组类型,返回一个字节数组. byte=bytearray(str,encoding,error) str:待转化的字符串,若该值为字符串,则encodi ...
- k8s-集群状态及部署一个实例
[root@k8s-master ~]# kubectl get csNAME STATUS MESSAGE ERRORcontroller-manager Healthy ok scheduler ...
- 「NOIP2016」「P1850」 换教室(期望dp
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...