偶尔碰到这题,简单数位DP题,然而我已生疏了……

这次算是重新想到的,看来对DP的理解有增进了……

dp[i][j][k],表示前i为,mod为j,是否出现2、3、5的剩下的数位可组成的数字。答案就是dp[len][0][0]

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std; #define LL long long LL dp[20][7][2];
int num[20]; LL dfs(int len, int mod, bool one, int show, bool flag){
if(len == 0){
if(show == 1 && mod == 0){
dp[len][mod][show] = 1;
}
else dp[len][mod][show] = 0;
return dp[len][mod][show];
}
if(!flag && dp[len][mod][show] != -1) return dp[len][mod][show]; int up = flag ? num[len]:9;
LL ans = 0, tmp = show; for(int i = 0; i <= up ; i++){
if(one && i == 8) continue;
if(i == 2 || i == 3 || i == 5) tmp = (show | 1);
// cout <<" tmp = " << tmp << endl;
ans += dfs(len - 1, (mod * 10 + i)%7, i == 1?true:false, tmp, (flag && i == up) ? true: false);
tmp = show;
// printf("%I64d====%d\n", ans, i); }
dp[len][mod][show] = ans;
return ans; } long long slove(LL n){ int len = 0;
LL tmp = n;
while(tmp){
num[++len] = tmp % 10;
tmp /= 10;
} // printf("%I64d\n", n); dfs(len, 0, false, 0, true); return dp[len][0][0]; } int main(){
long long l, r;
int T;
scanf("%d", &T);
while(T--){
memset(dp, -1, sizeof(dp));
scanf("%I64d%I64d", &l, &r);
printf("%I64d\n", slove(r) - slove(l - 1));
}
return 0;
}

  

网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C的更多相关文章

  1. 微软2016校园招聘在线笔试第二场 题目1 : Lucky Substrings

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if the number of different ch ...

  2. 题目3 : Spring Outing 微软2016校园招聘在线笔试第二场

    题目3 : Spring Outing 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 You class are planning for a spring outin ...

  3. 2015年阿里实习生面试Java研发工程师 小记

    5月5日,广州,阿里实习生面试,Java研发工程师,完全被虐orz 几乎没有Java项目开发经验,接近零基础,去水了一发,毫无悬念的被刷了..RP也是杠杠的,准备过的题目一个都没被问到,算法题也是一条 ...

  4. 阿里巴巴2017实习生招聘模拟题(部分)---C++后台开发方向

    1.一个机器人玩抛硬币的游戏,一直不停的抛一枚不均匀的硬币,硬币有A,B两面,A面的概率为3/4,B面的概率为1/4.问第一次出现连续的两个A年的时候,机器人抛硬币的次数的期望是多少? 9/4 11/ ...

  5. 网易互娱23届实习笔试_3x3锯齿数独

    一.输入: 输入一个3x3数独,字符'.'代表空输入三个宫的域,每个宫包括三个位置,[0,0]表示0行0列 二.输出要求: 1.每个宫里最终123各出现一次, 2.数独中的行列里不出现重复字符: 输出 ...

  6. 2017阿里C++研发工程师-校招-笔试模拟

    题目描述: 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生00下一对小兔,之后开始每年都会生下一对小兔.生下的小兔又会以同样的方式继续繁殖. 兔子的寿命都是x(x>=3) ...

  7. 字节跳动19春招研发第一次在线笔试-A卷

    结果:凉. 说明 此博客仅为笔试记录所用,如涉及版权或保密问题,请联系我及时删除. 联系方式:georgehu716@qq.com 1. 找零 时间限制:C/C++ 1秒,其他语言 2秒 空间限制:C ...

  8. 【微软2017年预科生计划在线编程笔试第二场 B】Diligent Robots

    [题目链接]:http://hihocoder.com/problemset/problem/1498 [题意] 一开始你有1个机器人; 你有n个工作; 每个工作都需要一个机器人花1小时完成; 然后每 ...

  9. 【微软2017年预科生计划在线编程笔试第二场 A】Queen Attack

    [题目链接]:http://hihocoder.com/problemset/problem/1497 [题意] 给你n个皇后; 然后问你其中能够互相攻击到的皇后的对数; 皇后的攻击可以穿透; [题解 ...

随机推荐

  1. XCode的debug断点调试

    debug 流程控制 当你通过 Xcode 的源码编辑器的侧边槽 (或者通过下面的方法) 插入一个断点,程序到达断点时会就会停止运行. 调试条上会出现四个你可以用来控制程序的执行流程的按钮. 从左到右 ...

  2. win+r 快速命令

    control keymgr.dll   打开凭据管理器 secpol.msc   本地安全策略 mstsc   远程 msconfig   启动选项 %temp%   临时文件夹 \\192.168 ...

  3. 新建 vue项目时报错,无法成功搭建项目

    之前电脑已经安装 Node环境和 vue-cli脚手架,但是过段时间没有使用,然后现在用 vue-cli 搭建项目的时候,启动服务器的时候报错,无法启动成功,摸索半天,发现是因为 Node和vue-c ...

  4. 在Eclipse中用Maven打包jar包--完整版

    将本地的jar导入到maven本地库中 <!--手动加入库中 --><!-- mvn install:install-file -DgroupId=org.apache.Hadoop ...

  5. leetcode_1014. Capacity To Ship Packages Within D Days

    https://leetcode.com/problems/capacity-to-ship-packages-within-d-days/ 传送带要在D天内把所有货物传送完,但是传送带每天有传送容量 ...

  6. Android(java)学习笔记193:ContentProvider使用之获得系统联系人信息01

    1.系统联系人的数据库(3张最重要的表) (1)raw_contacts  联系人表        保存联系人的id   contact_id (2)data 数据表       保存联系人的数据 ( ...

  7. day21-4 菱形继承问题(类的查找顺序)

    目录 菱形继承问题 经典类(了解) 新式类 mro方法 菱形继承问题 在Python中子类可以同时继承多个父类,如A(B,C,D) 如果继承关系为非菱形结构,则会按照先找B这一条分支,然后再找C这条分 ...

  8. reading from files

    如果有图会很好理解,最近太忙,以后再加吧 #首先有一个需要读取的文件名列表 #然后将文件名列表通过函数string_input_producer放进文件名队列. #有时候因为数据量太大,需要把他们放进 ...

  9. [Python3网络爬虫开发实战] 1.3.2-Beautiful Soup的安装

    Beautiful Soup是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据.它拥有强大的API和多样的解析方式,本节就来了解下它的安装方式. 1. 相关链接 官方文 ...

  10. ResNet实战

    目录 Res Block ResNet18 Out of memory # Resnet.py #!/usr/bin/env python # -*- coding:utf-8 -*- import ...