【按位dp】1出现的次数
l-r1出现的次数
注意端点处理
垃圾算法书 垃圾代码毁我青春
自己研究写了写
#include <iostream>
#include <string>
#include <string.h>
#include<fstream>
#include <algorithm>
using namespace std;
int dp[][];//dp[i][j],表示开头是j的i位数满足条件的有多少个
//注意计算得到的i位数并不是数学意义上的i位数 最高位可以为0
void init()
{
memset(dp, , sizeof(dp));//初始化数组all 0
dp[][] = ;
for (int i = ; i <= ; i++)
{
for (int j = ; j<; j++)//枚举第i位可能出现的数
{ if (j == )
dp[i][j] += pow(,i-);
for (int k = ; k<; k++)//枚举第i-1位可能出现的数
{
dp[i][j] += dp[i - ][k]; }
}
}
}
int solve(int n)
{
init();
int digit[];
int len = ;
while (n>)//把我们要计算的数一位一位地存到digit数组中
{
digit[++len] = n % ;
n /= ;
}
digit[len + ] = ;//最高位补零(只要不是6),因为下面从最高位开始参考前一位是否和现在构成62
int ans = ;//初始化符合个数
int tens = ,times=;
for (int i = len; i; i--)//从最高位开始
{
tens = i; times = ;
while (tens <len)
{
if (digit[tens + ] == )
times++;
tens++;
}
if (i != )
for (int j = ; j < digit[i]; j++)
{
ans += dp[i][j];
ans += times*pow(, i - );
}
else//最后一位
for (int j = ; j <= digit[i]; j++)
{
ans += dp[i][j];
ans += times*pow(, i - );
}
}
return ans;
}
int main()
{
int l, r;
while (cin >> l >> r)
{
if (l + r == )
break;
else
{
if (r < l)
{
int temp = r;
r = l;
l = temp;
}
cout << solve(r) - solve(l-) << endl;
}
}
return ; }
【按位dp】1出现的次数的更多相关文章
- 有关按位DP
这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...
- [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)
首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...
- UVA 1640 The Counting Problem(按位dp)
题意:给你整数a.b,问你[a,b]间每个数字分解成单个数字后,0.1.2.3.4.5.6.7.8.9,分别有多少个 题解:首先找到[0,b]与[0,a-1]进行区间减法,接着就只是求[0,x] 对于 ...
- BZOJ-5-4300: 绝世好题-位-DP
思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数 ...
- ZOJ-3962-数位dp
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5594 16进制下的数位dp,由于固定了位数,可以出现前 ...
- [Bzoj5043][Lydsy1709月赛]密码破译(按位dp)
5043: [Lydsy1709月赛]密码破译 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 477 Solved: 125[Submit][Sta ...
- P4310 绝世好题 按位DP
这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...
- 【按位dp】文盲的学习方法
当年大神的文章 <浅谈数位统计问题> 对于没什么文化(x 没有充分时间或懒得看那么多理论 应付个水考试的我 eg:62问题 某大大的代码和分析 #include <iostream& ...
- hdu 2089 不要62--数位dp入门
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
随机推荐
- 干货分享:深度解析Supplement Essay写作
今天Hotessay小编给同学们介绍下附加文书的创作思路.因为附加文书基本上都是短essay,所以简洁才是硬道理! 通常,我们可以把美国大学的附加文书分为以下几类: 1.Tell us about y ...
- Elasticsearch 过滤
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- ACM-Work Assignment
题目描述:Work Assignment 设有n件工作分配给n个人.将工作i 分配给第j 个人所需的费用为Cij.试设计一个算法,为每一个人都分配1 件不同的工作,并使总费用达到最小. 设计一个算 ...
- 第十篇 Form表单
Form表单 阅读目录(Content) Form介绍 普通的登录 使用form组件 Form那些事儿 常用字段演示 校验 使用Django Form流程 补充进阶 应用Bootstrap样式 批量添 ...
- 把Ubuntu系统自带的源修改为国内的源,中科大源链接:https://mirrors.ustc.edu.cn/repogen/
https://mirrors.ustc.edu.cn/repogen/ Tips: 可通过 URL 的形式直接下载配置. 例如: https://mirrors.ustc.edu.cn/repoge ...
- Egret Engine 2D - 项目配置
todo 看三个示例项目的完整源码和资源 <e:Group name="Button" height = "300" verticalCent ...
- 创建简单web项目
Intellij Idea直接安装(可根据需要选择自己设置的安装目录),jdk使用1.6/1.7/1.8都可以,主要是配置好系统环境变量,tomcat7上tomcat的官网下载压缩包解压即可. 一.创 ...
- 刷题31. Next Permutation
一.题目说明 题目是31. Next Permutation,英文太差看不懂,翻译了一下.才知道是求字典顺序下的下一个排列,不允许使用额外空间.题目难度是Medium! 二.我的实现 首先要进一步理解 ...
- python复习——字符串
1.字符串:用双引号括起的内容 2.title()——首字母大写:print(变量名.title()) upper()——全部大写:print(变量名.upper()) lower()——全部小写:p ...
- maven工具引入lib下的jar文件
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...