HDU 4507 吉哥系列故事——恨7不成妻(数位DP)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<iostream>
#define LL long long
#define MOD 1000000007
#define mp(a,b) make_pair(a,b)
using namespace std;
//长度,是否有7,数字和%7,数字%7
LL s1[20][2][7][7],s2[20][2][7][7],cnt[20][2][7][7];
int bit[20],len;
LL fac[20]={1};
pair<pair<int,int>,int> dfs(int len,int a,int b,int c,int limit){if(cnt[len][a][b][c]!=-1&&!limit) return mp(mp(cnt[len][a][b][c],s1[len][a][b][c]),s2[len][a][b][c]);if(!len){if(!a&&b&&c) cnt[len][a][b][c]=0LL;else cnt[len][a][b][c]=1LL;s1[len][a][b][c]=s2[len][a][b][c]=0LL;return mp(mp(cnt[len][a][b][c],s1[len][a][b][c]),s2[len][a][b][c]);}int up=limit?bit[len]:9;LL tcnt=0LL,ts1=0LL,ts2=0LL;for(int i=0;i<=up;i++){int nl=len-1,na=(a||i==7),nb=(b+i)%7,nc=(c*10+i)%7;LL f=(fac[len-1]*i)%MOD;pair<pair<int,int>,int> pre=dfs(nl,na,nb,nc,limit&&(i==up));ts1=(ts1+pre.first.second+pre.first.first*f)%MOD;ts2=(ts2+pre.second+(f*f%MOD)*pre.first.first+2*f*pre.first.second)%MOD;tcnt=(tcnt+pre.first.first)%MOD;} if(!limit){cnt[len][a][b][c]=tcnt;s1[len][a][b][c]=ts1;s2[len][a][b][c]=ts2;}return mp(mp(tcnt,ts1),ts2);
}
LL sum(LL n){LL a=n,b=n+1,c=2*n+1;int x=3,y=2;if(a%x==0) a/=x,x=1;if(a%y==0) a/=y,y=1; if(b%x==0) b/=x,x=1;if(b%y==0) b/=y,y=1;if(c%x==0) c/=x,x=1;if(c%y==0) c/=y,y=1;a%=MOD;b%=MOD;c%=MOD;return (a*b%MOD)*c%MOD;
}
LL slove(LL n){len=0;LL m=n;while(n){bit[++len]=n%10;n/=10;}return (sum(m)-dfs(len,0,0,0,1).second)%MOD;
}
int main(){for(int i=1;i<20;i++)fac[i]=(fac[i-1]*10)%MOD;int t;LL l,r;memset(cnt,-1,sizeof(cnt));scanf("%d",&t);while(t--){scanf("%I64d%I64d",&l,&r);//cout<<slove(r)<<" "<<slove(l-1)<<endl;printf("%I64d\n",((slove(r)-slove(l-1))%MOD+MOD)%MOD);}return 0;
}
HDU 4507 吉哥系列故事——恨7不成妻(数位DP)相关推荐
- HDU 4507 吉哥系列故事――恨7不成妻 数位DP
吉哥系列故事--恨7不成妻 Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
- HDU - 4507 吉哥系列故事——恨7不成妻(数位dp)
题目链接:点击查看 题目大意:给出闭区间[l,r],求出区间内与7不沾边的数的平方和 与7有关的条件: 整数中某一位是7: 整数的每一位加起来的和是7的整数倍: 这个整数是7的整数倍: 题目分析:抛去 ...
- HDU-4507 吉哥系列故事――恨7不成妻 (数位dp)
J - 吉哥系列故事――恨7不成妻 HDU - 4507 题解:数位dp 和简单的数位dp不同,这道题要算所有合法数的平方和 考虑到一个数可以写成X=ΣAi*Pi,(其中Ai为X每一位的值,Pi=10 ...
- HDU 4507 吉哥系列故事——恨7不成妻 详解(变态数位DP)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- HDU - 4507 吉哥系列故事――恨7不成妻 (数位DP)
Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 ...
- HDU 4507 吉哥系列故事――恨7不成妻 (平方拆解 + *数位DP 总结)
单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7 ...
- hdu4507吉哥系列故事——恨7不成妻 (数位dp)
Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...
- HDU4507 吉哥系列故事――恨7不成妻 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:求[L,R](1 <= L <= R <= 10^18)区间内和7无关的 ...
- 吉哥系列故事——恨7不成妻(数位 DP)
吉哥系列故事--恨7不成妻 ∑i=1n(pre+suc)2∑i=1npre2+suc2+2×pre×sucn×pre2+∑suc2+2×pre∑suc\sum_{i = 1} ^{n}(pre + s ...
最新文章
- 怎么还不见2005的中文版出来的?
- 麻烦的.text字段
- js中的preventDefault
- 数据库性能优化—分库分表
- 基于pygtk的linux有道词典
- mysql mvcc 隔离级别_关于 Mysql 四种隔离级别中 Lock 和 MVCC 的关系
- html tab切换jquery,jQuery版Tab标签切换
- LINUX的一些简单命令 时间修改
- json学习之三:JSONArray的应用
- c语言 void fun(float *p1),C语言程序设计试题1
- android各种组件的监听器
- git pull问题解决error: cannot lock ref
- 初二生态系统思维导图_初中生物生态系统知识点思维导图
- Ubuntu16.04火狐浏览器问题汇总
- AIDA64 Extreme Edition(硬件检测)多国语言绿色特别版
- flutter ios打包_Flutter 的Android 、iOS 打包
- QQ被盗后,如何找回好友
- druid数据源下 sqlserver 出现 对象名 'xxx' 无效
- NC65开发使用UAP-STUDIO6.5发布WebService
- 生成Excel的” 源代码