【按位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 ...
随机推荐
- HDU 4952 Number Transformation 多校8 机智数学
哎.这个题想了好久,状态不对啊...一个大家都出的题..当时想到肯定是可以有什么规律来暴力,不用算到10的10次方 对于某个k,x.从1到k循环,每次求一个新的x,这个x要大于等于原x,并且要是i的倍 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载. 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不 ...
- ConcurrentHashMap核心源码浅析
1.引子 并发编程中使用HashMap可能导致程序死循环.因为多线程会put方法添加键值对时将导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为 ...
- java课程之团队开发冲刺阶段2.2
一.总结昨天进度 1.单独实现静音功能,还没有进行整体整合 二.遇到的问题 1.一开始设计静音的思路有问题,所以在实现上有些许麻烦,一开始的想法是将这些音量直接设置为0就可以实现静音,但是在恢复响铃模 ...
- 十六、CI框架之数据库操作get用法
一.使用数据库的Get方法读取内容,如下代码: 二.数据库如下: 二.效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦, ...
- POJ 2771 最大点独立集
这是经典的最大点独立集 还是可以转化成最大匹配数,为什么呢,因为求出最大匹配数之和,匹配的边的两个端点互斥,只能去一个,所以最后结果就用总点数-最大匹配数即可 #include <iostrea ...
- dubbo小教程
dubbo小教程 先给出阿里巴巴dubbo的主页:http://code.alibabatech.com/wiki/display/dubbo/Home-zh 自己的demo下载地址:http://d ...
- Flink:动态表上的连续查询
用SQL分析数据流 越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案.其中许多应用程序专注于分析流数据.分析的数据流来源广泛,如数据库交易,点击,传感器 ...
- springboot-jar
预览 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...
- POJ 3911:Internet Service Providers
Internet Service Providers Time Limit: 2MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I ...