推公式的能力需要锻炼。。

/*
dp的时候要存结构体
里面三个元素:
cnt,就是满足条件的个数
sum1,就是满足条件的数字和
sum2,满足条件的数字平方和
推导过程:还是用记忆化搜索模板
dp[pos][mod1][mod2]:后pos位模7=mod1,数位和模7=mod2的状态
设当前状态cur
枚举当前位i,碰到7跳过
求出后pos-1位的状态nxt
这里需要建立当前数的模型:
设x是后pos-1位的数:i*10^len+x;
cur.cnt+=nxt.cnt;
cur.sum1+=nxt.sum1+nxt.cnt*(i*10^(pos-1))
cur.sum2+=sum{ (i*10^len+x)^2 }= sum{ (i*10^len)^2 }+sum{ x^2 }+sum{ 2*x*i*10^len }
化简上式:sum{ x^2 }=nxt.sum2,
sum{ 2*x*i*10^len }=nxt.sum1*2*i*10^len
sum{ (i*10^len)^2 }=nxt.cnt*(i*10^len)
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
struct Node{
ll cnt,sum1,sum2;
Node(){cnt=-;sum1=sum2=;}
Node(ll cnt,ll sum1,ll sum2):cnt(cnt),sum1(sum1),sum2(sum2){}
}dp[][][];
ll a[],f[];
Node dfs(ll pos,ll mod1,ll mod2,ll lim){
if(pos<=) return mod1&&mod2?Node(,,):Node(,,);//% 7 ≠0 即可
if(!lim && dp[pos][mod1][mod2].cnt!=-)return dp[pos][mod1][mod2];
int num=lim?a[pos]:;
Node cur;cur.cnt=;
for(int i=;i<=num;i++){
if(i==)continue;
Node nxt=dfs(pos-,(mod1*+i)%,(mod2+i)%,lim&&i==num);
cur.cnt=(cur.cnt+nxt.cnt)%mod;
cur.sum1=((cur.sum1+nxt.sum1)%mod+nxt.cnt*(i*f[pos]%mod)%mod)%mod;
ll tmp1=nxt.sum1*%mod*i%mod*f[pos]%mod;
ll tmp2=nxt.cnt*(i*f[pos]%mod)%mod*(i*f[pos]%mod)%mod;
cur.sum2=((cur.sum2+nxt.sum2)%mod+(tmp1+tmp2%mod)%mod)%mod;
}
if(!lim)dp[pos][mod1][mod2]=cur;
return cur;
}
ll query(ll x){
int len=;
while(x){a[++len]=x%;x/=;}
return dfs(len,,,).sum2;
}
int main(){
f[]=;for(int i=;i<=;i++)f[i]=f[i-]*%mod;
ll A,B,t;cin>>t;
while(t--){
cin>>A>>B;
cout<<(query(B)-query(A-)+mod)%mod<<endl;
}
}

hdu4507 数位dp+推公式的更多相关文章

  1. sgu495:概率dp / 推公式

    概率题..可以dp也可以推公式 抽象出来的题目大意: 有 n个小球,有放回的取m次  问 被取出来过的小球的个数的期望 dp维护两个状态 第 i 次取出的是 没有被取出来过的小球的 概率dp[i] 和 ...

  2. SGU 495 Kids and Prizes:期望dp / 概率dp / 推公式

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题意: 有n个礼物盒,m个人. 最开始每个礼物盒中都有一个礼物. m个人依次随 ...

  3. Codeforces 288E - Polo the Penguin and Lucky Numbers(数位 dp+推式子)

    题目传送门 似乎我的解法和官方题解不太一样 纪念自己独立做出来的一道难度 2800 的题. 我们记 \(ans(x)\) 为 \([444...44,x]\) 的答案,显然答案为 \(ans(r)-a ...

  4. HDU 4661 Message Passing ( 树DP + 推公式 )

    参考了: http://www.cnblogs.com/zhsl/archive/2013/08/10/3250755.html http://blog.csdn.net/chaobaimingtia ...

  5. hdu4507(数位DP)

    题目意思: 给定一个区间,求这段区间中,不含7,对7取余为0,各个位数相加之和对7取余为0的数的平方和. 设d[i][j][k][m]代表长度为i的,对7取余为j的,各个位数相加之和对7取余为k的数的 ...

  6. CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  7. HDU4507 吉哥系列故事——恨7不成妻 题解 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题目大意: 找到区间 \([L,R]\) 范围内所有满足如下条件的数的 平方和 : 不包含'7' ...

  8. HDU-4507 吉哥系列故事——恨7不成妻 数位DP

    题意:给定区间[L, R]求区间内与7无关数的平方和.一个数当满足三个规则之一则认为与7有关:1.整数中某一位是7:2.整数的每一位加起来的和是7的整数倍:3.这个整数是7的整数倍: 分析:初看起来确 ...

  9. 递推、数位DP解析(以HDU 2089 和 HDU 3555 为例)

    HDU 2089 不要62 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人 ...

随机推荐

  1. RBAC权限管理模型 产品经理 设计

    RBAC权限管理模型:基本模型及角色模型解析及举例 | 人人都是产品经理http://www.woshipm.com/pd/440765.html RBAC权限管理 - PainsOnline的专栏 ...

  2. 原生js设置rem

    使用rem是为了界面响应不同尺寸的手机,引入下面的方法就可以使用rem了. setFontSize: function (doc, win) { var docEl = doc.documentEle ...

  3. CLOUD清理临时表空间

    --查找空间名.物理空间路径 SELECT name, physical_nameFROM sys.master_filesWHERE database_id = DB_ID('tempdb'); 可 ...

  4. 使用Spring表达式语言进行装备--SpEL

    本文主要想记录最近的两个使用spring框架实现通过配置文件装备Bean,以及使用SpEL装备Bean. 1.使用配置文件装备Bean: 当我们写某些Bean的时候是希望这个Bean当中的属性是可以通 ...

  5. Python——接口类、抽象类

    建立一个接口类.抽象类的规范 from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta): # 元类 默认的元类 t ...

  6. shutil模块和几种文件上传Demo

    一.shutil模块 1.介绍 shutil模块是对os中文件操作的补充.--移动 复制 打包 压缩 解压 2.基本使用 1. shutil.copyfileobj(文件1, 文件2, 长度) 将文件 ...

  7. JMeter测试(菜鸟级,高手莫点)

    干了这么多年开发,多线程测试都是自己写程序,都不知道还有JMeter这玩意,莫笑莫笑 一个简单的测试计划如下: 在[测试计划]下创建[线程组],线程组下[HTTP请求]和[查看结果树]是必须的,[HT ...

  8. 计算机基础理论知识梳理篇(一):数据类型长度、内存页、IPC

    字长与数据类型长度 字长指CPU在同一时间能够处理二进制数据的位数,是由其外接数据总线(地址总线决定了CPU的寻址空间,如16位微型机的地址总线为20位,其可寻址空间为220 = 1MB)的条数决定的 ...

  9. html页面中引入自签名证书的js web资源出现net::ERR_CERT_AUTHORITY_INVALID

    其实是浏览器客户端对自签名的内容认为不安全引起的,临时方法可以再浏览器中先直接访问下那个自签名的https地址,然后再访问有引用的那个页面就可以了. 以下内容引用自https://www.morong ...

  10. halcon+WinForm显示rgb图并灰度化

    1.halcon代码,并导出成C# read_image (Demo, 'C:/Users/user/Pictures/demo.jpg') dev_display (Demo) rgb1_to_gr ...