/*

  

数位DP题,设dp[n][k][j]为前n位最后一位是k时mod为j的个数。操作都相同,可以使用矩阵加速。本来对于每一位是7*10,可以把它压向一个向量。

加速矩阵为70*70,再加一维计算前缀和即可。

*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
using namespace std;
const int MOD=1e9+7;
struct Matrix{
int a[75][75];
};
int l,r,K;
Matrix T; void set(Matrix &p){
for(int i=0;i<=70;i++) p.a[i][i]=1;
} Matrix mul(Matrix a,Matrix b){
Matrix c;
for(int i=0;i<=70;i++){
for(int j=0;j<=70;j++){
c.a[i][j]=0;
for(int k=0;k<=70;k++){
c.a[i][j]=((LL)c.a[i][j]+(LL)a.a[i][k]*(LL)b.a[k][j])%MOD;
}
}
}
return c;
} void clear(Matrix &C){
for(int i=0;i<=70;i++){
for(int j=0;j<=70;j++) C.a[i][j]=0;
}
} int getId(int i,int j){
return i+j*7;
} Matrix power(Matrix p,int c){
Matrix res;
clear(res);set(res);
while(c){
if(c&1) res=mul(res,p);
c>>=1;
p=mul(p,p);
}
return res;
} void getT(){
clear(T);
for(int i=0;i<7;i++){
for(int j=0;j<=9;j++){
for(int k=0;k<10;k++){
if(j+k==K) continue;
int x=(i*10+k)%7;
T.a[getId(i,j)][getId(x,k)]++;
}
}
}
for(int i=0;i<10;i++) T.a[getId(0,i)][70]++;
T.a[70][70]=1;
} int main(){
int tt;
scanf("%d",&tt);
while(tt--){
scanf("%d%d%d",&l,&r,&K);
getT();
Matrix res;
clear(res);
for(int i=1;i<10;i++){
res.a[0][getId(i%7,i)]++;
}
Matrix tmp=mul(res,power(T,r));
int ans=tmp.a[0][70];
tmp=mul(res,power(T,l-1));
ans=(((LL)ans-(LL)tmp.a[0][70])%MOD+MOD)%MOD;
cout<<ans<<endl;
}
}

BC #62 div1 02的更多相关文章

  1. HTTPS连接的前几毫秒发生了什么——Amazon HTTPS案例分析

    转自: http://blog.jobbole.com/48369/ 提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大改动.以下是正文. 花了数小时阅读了如潮的 ...

  2. [转]HTTPS连接的前几毫秒发生了什么

    本文由 伯乐在线 - 水果泡腾片 翻译.未经许可,禁止转载!英文出处:JEFF MOSER.欢迎加入翻译小组. 提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大 ...

  3. HTTPS连接前的几毫秒发生了什么?

    原文:http://blog.jobbole.com/48369/ 提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大改动.以下是正文. 花了数小时阅读了如潮的好 ...

  4. Hadoop RPC

    hadoop rpc机制 && 将avro引入hadoop rpc机制初探 1 RPC RPC(Remote Procedure Call)--远程过程调用,它是一种通过网络从远程计算 ...

  5. 协议分析之qq协议---qq登录

    QQ 协议分析:获取各类登录会话密钥 我们知道QQ的一些会话密钥是在登录过程中生成的,尤其是Session Key,有了它便可以解密出聊天文本内容.本文主要是了解一下QQ的加密机制,首先是用嗅探工具W ...

  6. EChart数据的异步加载和更新

    ECharts是国内开发一款图标插件,在网页中我们经常要用到图标显示,直接引用十分方便. 直接到ECharts主页调用插件 <!DOCTYPE html> <html style=& ...

  7. Linux系统排查2——CPU负载篇

    本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...

  8. 加载程序到android虚拟机报错: android.widget.RelativeLayout cannot be cast to android.widget.Button

    05-23 02:53:48.416: E/Trace(875): error opening trace file: No such file or directory (2) 05-23 02:5 ...

  9. HDU5649 DZY Loves Sorting 线段树

    题意:BC 76 div1 1004 有中文题面 然后奉上官方题解: 这是一道良心的基础数据结构题. 我们二分a[k]的值,假设当前是mid,然后把大于mid的数字标为1,不大于mid的数字标为0.然 ...

随机推荐

  1. scala学习笔记3:基本控制结构基础

    以下主要记录的是看完scala in programming这本书buildin control structures(第七章)后的要点总结. 1,if,while,do while和for的用法和j ...

  2. [Python实战] 功能简单的数据查询及可视化系统

    前言 数据时代,数据的多源集成和快速检索查询是第一步,配上数据分析及可视化才能算窥得大数据一角. 创建这个项目的主要目的一是对前期工作的一些总结,二是提升自己. 这里简单介绍一下sqlpro这个项目的 ...

  3. 浅谈css的行内类型标签和块级标签

    常用标签的行内类型标签有:a.span.img:块级标签有:div.p.h1~6.ul.ol.li.dl.dt.dd. 行内类型标签的特征:标签的大小由标签的内容决定,不能设置width和height ...

  4. 前端er怎样操作剪切复制以及禁止复制+破解等

    前言 有时候我们经常会碰到这些场景:玩掘金.知乎的时候复制一段文字,总是会在内容后面加上一些版权信息,以及像小说网站等都有禁止选中,禁止复制这种功能,还有点击自动复制账号的功能. 我也经常遇到这些场景 ...

  5. Java 基础入门随笔(8) JavaSE版——静态static

    面向对象(2) this:代表对象.代表哪个对象呢?当前对象. 当成员变量和局部变量重名,可以用关键字this来区分. this就是所在函数所属对象的引用.(简单说:哪个对象调用了this所在的函数, ...

  6. Protecting resources in iPhone and iPad apps

    源码:https://github.com/lingzhao/EncryptedResourceDemo UPDATE: The example project has been updated to ...

  7. Deployd的使用

    deployd一个生成后台数据的软件,可以创建json格式的数据,也可以对数据进行增删改查等操作,甚至可以验证登录,简直就是自学好帮手呀,不用后台搞定后台,就用deployd 下载:链接: https ...

  8. Vue指令3:v-for

    列表渲染 我们用 v-for 指令根据一组数组的选项列表进行渲染.v-for 指令需要使用item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名. & ...

  9. 11Java Server Pages 动作

    Java Server Pages 动作 JSP标准动作 分类 JSP标准动作 存取JavaBean相关 <jsp:useBean> <jsp:setProperty> < ...

  10. LINUX-用户和群组

    groupadd group_name 创建一个新用户组 groupdel group_name 删除一个用户组 groupmod -n new_group_name old_group_name 重 ...