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出现的次数的更多相关文章

  1. 有关按位DP

    这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...

  2. [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)

    首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...

  3. 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] 对于 ...

  4. BZOJ-5-4300: 绝世好题-位-DP

    思路 :题意描述我也很绝望 .先说一下题意 : 给定长度为n数组a [ ],求a[ ] 的一个最大子序列(可以不连续),使得b [ i ]& b [ i - 1 ] ! = 0.求最大的 b数 ...

  5. ZOJ-3962-数位dp

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5594             16进制下的数位dp,由于固定了位数,可以出现前 ...

  6. [Bzoj5043][Lydsy1709月赛]密码破译(按位dp)

    5043: [Lydsy1709月赛]密码破译 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 477  Solved: 125[Submit][Sta ...

  7. P4310 绝世好题 按位DP

    这名字可海星\(OvO\) 思路:\(DP\) 提交:2次(\(zz\)我竟然把三目运算符写错了\(QwQ\)) 题解: 按位进行\(DP\):\(f[i]\)表示结尾的数字包括\(1<< ...

  8. 【按位dp】文盲的学习方法

    当年大神的文章 <浅谈数位统计问题> 对于没什么文化(x 没有充分时间或懒得看那么多理论 应付个水考试的我 eg:62问题 某大大的代码和分析 #include <iostream& ...

  9. hdu 2089 不要62--数位dp入门

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

随机推荐

  1. HZNU-ACM寒假集训Day11小结 贪心

    1.刘汝佳紫书区间问题三大情况 1.选择不相交区间 贪心策略:一定要选择第一个区间 2.区间选点问题 贪心策略:取最后一个点 3.区间覆盖问题: n个闭区间,选择尽量少的区间覆盖一条指定线段[s,t] ...

  2. opencv人脸检测

    找了一张自己喜欢的<超人前传>剧照 其中的xml分类器需要到https://github.com/opencv/opencv/tree/master/data/haarcascades去下 ...

  3. vue学习(五)生命周期 的钩子函数

    生命周期的钩子函数 主要有以下几种 beforeCreate created beforeMount mounted beforeUpdate updated activated deactivate ...

  4. Scrapy的学习和使用

    1.安装 在windows下安装是真心复杂,不搞了,直接在linux下研究吧! sudo pip install scrapy 2.安装遇到问题 2.1.bz2 module not availabl ...

  5. [Python3] RSA的加解密和签名/验签实现 -- 使用pycrytodome

    Crypto 包介绍: pycrypto,pycrytodome 和 crypto 是一个东西,crypto 在 python 上面的名字是 pycrypto 它是一个第三方库,但是已经停止更新,所以 ...

  6. OC项目加入swift第三方库遇到的坑

    https://www.jianshu.com/p/96d868dcd69c 2017.07.07 16:23* 字数 295 阅读 5218评论 2喜欢 4 首先,在OC项目的Podfile文件中添 ...

  7. Android进阶——Android视图工作机制之measure、layout、draw

    自定义View一直是初学者们最头疼的事情,因为他们并没有了解到真正的实现原理就开始试着做自定义View,碰到很多看不懂的代码只能选择回避,做多了会觉得很没自信.其实只要了解了View的工作机制后,会发 ...

  8. Linux学习打卡20200214

  9. Javascript声明和使用变量

    1.1变量的声明 要在程序中使用变量,就必须从声明变量学起,因为Javascript语法与我们基础的其他程序语言声明变量的方法略有不同,但是Javascript语法的变量应用非常强大,使用也非常简单. ...

  10. 题解 P1654 【OSU!】

    题面 一序列\(a\), 对于每一个\(i\)均有\(a_i\)有\(p_i\)的几率为1, 否则为\(0\) 求: \(a\)中极长全\(1\)子序列长度三次方之和的期望 前置知识 基本期望(期望的 ...