2018.09.27 hdu4507吉哥系列故事——恨7不成妻(数位dp)
传送门
一道比较综合的数位dp。
维护三个值:[L,R][L,R][L,R] 区间中与7无关的数的数量,与7无关的数之和,与7无关的数的的平方和。
然后可以用第一个值推第二个,第一个和第二个值推第三个。
代码:
#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007
using namespace std;
ll L,R,mul[30];
int t,len,num[20];
struct DP{ll c,s1,s2;}f[30][10][10];
inline DP dfs(int pos,int m1,int m2,bool lim){
if(pos==0)return (DP){(m1&&m2),0ll,0ll};
if(~f[pos][m1][m2].c&&!lim)return f[pos][m1][m2];
DP ret=(DP){0ll,0ll,0ll};
int up=lim?num[pos]:9;
for(int i=0;i<=up;++i){
if(i==7)continue;
DP tmp=dfs(pos-1,(m1+i)%7,(m2*10+i)%7,lim&&i==up);
(ret.c+=tmp.c)%=mod;
(ret.s1+=tmp.s1+tmp.c*mul[pos]%mod*i%mod)%=mod;
(ret.s2+=((tmp.c*(mul[pos]*mul[pos]%mod)%mod)%mod*i%mod*i%mod+tmp.s2)%mod+tmp.s1*2%mod*mul[pos]%mod*i%mod)%=mod;
}
if(!lim)f[pos][m1][m2]=ret;
return ret;
}
inline ll solve(ll x){
if(!x)return 0;
len=0;
while(x)num[++len]=x%10,x/=10;
return dfs(len,0,0,1).s2;
}
int main(){
memset(f,-1,sizeof(f));
mul[1]=1;
for(int i=2;i<=20;++i)mul[i]=mul[i-1]*10%mod;
scanf("%d",&t);
while(t--)scanf("%lld%lld",&L,&R),printf("%lld\n",((solve(R)-solve(L-1))%mod+mod)%mod);
return 0;
}
2018.09.27 hdu4507吉哥系列故事——恨7不成妻(数位dp)的更多相关文章
- hdu4507吉哥系列故事——恨7不成妻 (数位dp)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- HDU-4507 吉哥系列故事——恨7不成妻 数位DP
题意:给定区间[L, R]求区间内与7无关数的平方和.一个数当满足三个规则之一则认为与7有关:1.整数中某一位是7:2.整数的每一位加起来的和是7的整数倍:3.这个整数是7的整数倍: 分析:初看起来确 ...
- hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模
http://acm.hdu.edu.cn/showproblem.php?pid=4507 求[L,R]中不满足任意条件的数的平方和mod 1e9+7. 条件: 1.整数中某一位是7:2.整数的每一 ...
- hdu4507 吉哥系列故事——恨7不成妻[数位DP]
这题面什么垃圾玩意儿 首先看到问题格式想到数位DP,但是求的是平方和.尝试用数位DP推出. 先尝试拼出和.设$f[len][sum][mod]$表示填到$len$位,已填位置数位和$sum$,数字取余 ...
- 吉哥系列故事——恨7不成妻(数位DP)
吉哥系列故事——恨7不成妻 http://acm.hdu.edu.cn/showproblem.php?pid=4507 Time Limit: 1000/500 MS (Java/Others) ...
- 【hdu4507】吉哥系列故事——恨7不成妻 数位dp
题目描述 求 $[L,R]$ 内满足:数位中不包含7.数位之和不是7的倍数.本身不是7的倍数 的所有数的平方和 mod $10^9+7$ . 输入 输入数据的第一行是case数T(1 <= T ...
- [HDU4507]吉哥系列故事——恨7不成妻
[HDU4507]吉哥系列故事--恨7不成妻 试题描述 单身!依然单身!吉哥依然单身!DS级码农吉哥依然单身!所以,他生平最恨情人节,不管是214还是77,他都讨厌!吉哥观察了214和77这两个数,发 ...
- HDU4507 吉哥系列故事——恨7不成妻 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题目大意: 找到区间 \([L,R]\) 范围内所有满足如下条件的数的 平方和 : 不包含'7' ...
- 吉哥系列故事——恨7不成妻(数位dp)
吉哥系列故事--恨7不成妻 传送门 Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥 ...
随机推荐
- python 之九九乘法表
for i in range(1,10): for j in range(1,i+1): print(f"{j}*{i}={i*j}",end='\t') print() 运行结果 ...
- 一个简单例子弄懂什么是javascript函数劫持
javascript函数劫持很简单,一般情况下,只要在目标函数触发之前,重写这个函数即可. 比如,劫持eval函数的代码如下: var _eval=eval; eval=function(x){ if ...
- state介绍
state是salt最核心的功能,通过预先定制好的sls(salt state file)文件对被控主机进行状态管理,支持包括程序包(pkg).文件(file).网络配置(network).系统服务( ...
- delphi TEdit透明
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- spring 中的断言的作用
org.springframework.util.AssertAssert翻译为中文为"断言".用过JUNIT的应该都知道这个概念了.就是断定某一个实际的值就为自己预期想得到的,如 ...
- while
public class TestWhile { /** * 测试循环 */ public static void main(String[] args) { int a=1; while(a< ...
- ArcGIS模型构建器案例学习-批量删除空要素类地理模型
ArcGIS模型构建器案例学习笔记-批量删除空要素类地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:批量删除记录个数为0的矢量文件 优点:逻辑清晰,不 ...
- Eclipse安装教程
Eclipse安装教程 (Win7_64bit + Eclipse_64bit + JDK_8u131_64bit + python2.7.8 + PyDev5.7.0插件) 适用操作系统:W ...
- springboot重定向
参考https://www.cnblogs.com/kxkl123/p/7800967.html public String test() { return "redirect:/" ...
- Tomb Raider(暴力模拟)
Tomb Raider https://hihocoder.com/problemset/problem/1829?sid=1394836 时间限制:1000ms 单点时限:1000ms 内存限制:2 ...