题目背景

本题由世界上最蒟蒻最辣鸡最撒比的SOL提供。

寂月城网站是完美信息教室的官网。地址:已和谐 。

题目描述

辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!

好在在他眼里,并不是所有数都是萌的。只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数;110是萌的,因为包含回文子串11;但是102不是萌的,1201也不是萌的。

现在SOL想知道从l到r的所有整数中有多少个萌数。

由于答案可能很大,所以只需要输出答案对1000000007(10^9+7)的余数。

输入输出格式

输入格式:

输入包含仅1行,包含两个整数:l、r。

输出格式:

输出仅1行,包含一个整数,即为答案。

输入输出样例

输入样例#1:

1 100

输出样例#1:

10

输入样例#2:

100 1000

输出样例#2:

253

说明

记n为r在10进制下的位数。

对于10%的数据,n <= 3。

对于30%的数据,n <= 6。

对于60%的数据,n <= 9。

对于全部的数据,n <= 1000,l < r。

题目解析

数位DP,难度一般

因为数据比较水所以我先预处理出1~1000的萌数

处理需要技巧,因为萌数有两种:相邻数相同和隔一个数相同,直接做会难以去重。所以我们搞一搞,用容斥就不需要去重了。

dp[i][j][k] 表示第i位是j,第i-1位是k的萌数数量,进行数位dp即可。

Code

#include<bits/stdc++.h>
using namespace std;const long long MAXN = 1000 + 5;
const long long p = 1e9 + 7;long long dp[MAXN][10][10];
//到第i位时,i位是j,i-1位是k,有多少不萌的数。
long long ans;
string l,r;long long find_ans(long long n,string s) {long long x = -1,y = -1;long long tot = 0,res = 0;bool flag = true;for(long long i = 0; i < n; i++) {tot = (tot * 10 + s[i] - '0') % p;}for(long long i = 1; i < n; i++) {for(long long j = 1; j <= 9; j++) {for(long long k = 0; k <= 9; k++) {res = (res + dp[i][j][k]) % p;}}}if(n > 1) res += 10;for(long long i = n; i > 1; i--) {long long tmp = s[n - i] - '0';for(long long j = 0; j < tmp; j++) {if(i == n && j == 0) continue;for(long long k = 0; k <= 9; k++) {if(x != j && y != j && j != k && k != x) {res += dp[i][j][k];res %= p;}}}if(tmp == x||tmp == y) {flag = false;break;}y = x;x = tmp;}if(flag) {for(long long j = 0; j <= s[n - 1] - '0'; j++) {if(j != y && j != x) {res++;res %= p;}}}return (tot + 1 - res + p) % p;
}int main() {cin >> l >> r;for(long long i = 2; i <= 1000; i++) {for(long long j = 0; j <= 9; j++) {for(long long k = 0; k <= 9; k++) {if(j == k) continue;for(long long l = 0; l <= 9; l++) {if(j != l && k != l) dp[i][j][k] += dp[i - 1][k][l];}if(i == 2) dp[i][j][k]++;dp[i][j][k] %= p;}}}ans = (long long)(find_ans(r.length(),r) - find_ans(l.length(),l)) % p;for(long long i = 1; i <= l.length(); i++) {if(l[i] == l[i - 1] || (i > 1 && l[i] == l[i - 2])) {ans++;ans %= (long long)p;break;}}printf("%lld",ans);return 0;
}

转载于:https://www.cnblogs.com/floatiy/p/9476986.html

[Luogu] P3413 萌数相关推荐

  1. 洛谷P3413 SAC#1 - 萌数(数位dp)

    题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的,因为101本 ...

  2. luogu 3413 SAC#1 - 萌数

    题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的,因为101本 ...

  3. 洛谷 P3413 SAC#1 - 萌数(数位dp)

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  4. 洛谷P3413 SAC#1 - 萌数【数位DP】

    时空限制 1000ms / 128MB 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的 ...

  5. luogu3413 萌数

    https://www.luogu.org/problem/P3413 数位dp题 直接算萌数不容易,但直接算非萌数比较容易 一个非萌数只要满足对于任意一位$i$,$num[i]!=num[i+1] ...

  6. BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)

    BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演) 手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/ ...

  7. 洛谷 3413 萌数

    Description 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的 ...

  8. SAC#1 - 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

  9. [LUOGU3413] SAC#1 - 萌数

    题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数 ...

最新文章

  1. 华为外包1年_2021年(1月)有哪些高性价比的华为/荣耀手机值得购买?
  2. 企业级闪存弥补数据经济价值短板
  3. pip快速下载安装python 模块module
  4. linux lamp架构部署,Centos7部署LAMP平台之架构之路
  5. mysql 做回归模型_GitHub - themycode/intelligent-test-platform: intelligent-test-platform
  6. 老笔记整理四:字符串的完美度
  7. 程序员35岁之后的出路_35岁的程序员走向何方?
  8. 回顾一年的工作历程_ppt模板开门红年会颁奖典礼PPT模板,回顾总结过去一年的各项工作...
  9. java 编写无状态代码,一种真正实现RMI无状态化的方法续:JVM源码修改步骤
  10. V4L2Gstreamer媒体控制工具(五)
  11. openstack创建的实例不能使用ssh登录
  12. Selenium WebDriver-通过键盘事件操作浏览器
  13. 像素生存者2为什么显示服务器不可用,像素生存者2为什么更新了玩不了 | 手游网游页游攻略大全...
  14. c语言中专业术语及其定义,c语言中常用专业英语词汇
  15. Ubuntu双系统、ROS、软件安装教程
  16. P3376 dinic
  17. CSP内容安全策略基础版
  18. 天马行空 | 假如上网装X需要花钱?
  19. 计算机网络中man是,计算机网络分类为LAN、MAN和()。
  20. NAACL2021 信息抽取与少/零样本相关论文整理

热门文章

  1. 使用pyodbc连接SqlServer数据库问题总结
  2. 2016年值得关注的十个微信公众号
  3. 什么?你还不知道CRM系统怎么用?正确的打开方式是这样!
  4. 基于几何中位数的通道剪枝——Filter Pruning via Geometric Median
  5. js获取汉字的拼音首字母
  6. mysql客户端navicate注释sql语句
  7. java 环形缓存_shuffle 中环形缓冲区
  8. Linux学习02---软件包管理
  9. 第四届字节跳动前端青训营(基础班)Day1之前端简介
  10. python分布式存储系统_主流分布式存储技术的对比分析与应用