HDU-4507 吉哥系列故事――恨7不成妻 (数位dp)
J - 吉哥系列故事――恨7不成妻
HDU - 4507
题解:数位dp
和简单的数位dp不同,这道题要算所有合法数的平方和
考虑到一个数可以写成X=ΣAi*Pi,(其中Ai为X每一位的值,Pi=10^i)
因为(A+B)^2=A*A+2*A*B+B*B
(X1+X2+X3+...+Xn)^2=X1^2+2*X1*(X2+X3+...+Xn)+(X2+X3+...+Xn)^2
=X1^2+2*X1*(X2+X3+...+Xn)+X2^2+2*X2*(X3+...+Xn)+(X3+...+Xn)^2
...
一直递归分治,即可求的
因此在dp时,只要记录当前状态合法数的数量cnt,当前状态之后的和sum,平方和sqr
A=Ai*Pi
now.cnt=now.cnt+nxt.cnt;
now.sum=now.sum+nxt.sum+A*nxt.cnt;
now.sqr=now.sqr+A*A*nxt.cnt+2*A*nxt.sum+nxt.sqrt;
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9 + 7;
int len,a[20];
LL p[20];
struct node{LL cnt,sqr,sum;bool vis;node(LL a=0,LL b=0,LL c=0,bool d=0){cnt=a;sqr=b;sum=c;vis=d;}
}dp[20][10][10];
node dfs(int i,LL mod1,LL mod2,bool mark){if(i==0){if(mod1%7==0||mod2%7==0) return node(0);return node(1);}if(dp[i][mod1][mod2].vis&&mark==0) return dp[i][mod1][mod2];int mx=mark?a[i]:9;node ret;for(int j=0;j<=mx;j++){if(j==7) continue;node tmp=dfs(i-1,(mod1+j)%7,(mod2*10+j)%7,mark&&j==mx);LL A=j*p[i-1]%mod;ret.cnt=(ret.cnt+tmp.cnt)%mod;ret.sum=(ret.sum+A*tmp.cnt%mod+tmp.sum)%mod;ret.sqr=(A*A%mod*tmp.cnt%mod+2*A*tmp.sum%mod+tmp.sqr+ret.sqr)%mod;}if(mark==0) {dp[i][mod1][mod2]=ret;dp[i][mod1][mod2].vis=1;}return ret;
}
LL solve(LL x){len=0;while(x) a[++len]=x%10,x/=10;node ret=dfs(len,0,0,1);return ret.sqr%mod;
}
int main(){int T;LL l,r;p[0]=1;for(int i=1;i<=18;i++) p[i]=p[i-1]*10;cin>>T;for(int cas=1;cas<=T;cas++){cin>>l>>r;cout<<(solve(r)-solve(l-1)+mod)%mod<<endl;}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)
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这两个数,发现: ...
- HDU 4507 吉哥系列故事——恨7不成妻(数位DP)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove Tencent马拉松初赛第二场的鬼畜题... 其实 ...
- 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 ...
最新文章
- 【Ping】unix - ping命令的退出状态
- docker network
- FLutter入门:异步加载组件FutureBuilder
- Web3d明日之星基于Javascript和OpenGL的技术
- python10的因数_十五道Python小案例,学会这些,Python基础已过关!
- Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
- numpy.mean() in Python
- gulp html页面路径,通过gulp-connect部署静态页面,html页面中include路径无法get!
- 【机器学习中的数学】多项式分布及其共轭分布
- 【SPOJ - DQUERY】D-query【主席树 —— 区间中不同数的个数】
- PHP打印九九乘法表
- mysql查询这一周数据库_MYSQL查询一周,一月内的数据
- Ubuntu下声卡驱动解决方法alsa
- 线性代数A矩阵乘以A的转置的含义或者几何意义
- 怎么把视频做成背景html,HTML5设置视频背景的方法介绍
- [转]关于计算机研究生报考方向的简要介绍
- Fortran写nc文件nbsp;f90nbsp;netcdf
- 常用软件下载地址汇总
- CSCAD AutoCAD 修改光标颜色
- 360良医搭载人工智能 让互联网医疗信息服务更精准
热门文章
- ubuntu16.04更换清华源
- OkHttp 内存溢出问题 A connection to xxxxxx was leaked.
- 益企工程云荣获“2021中国软件和信息服务业年度工程建设领域值得信赖产品”
- mv强制覆盖 shell_shell mv命令
- 使用FontLab Studio制作字体
- HttpsCA证书的申请和安装
- http组成部分_博客的组成部分| 第2部分
- 千锋教育实训day04————java
- 黑客必读:蜜罐技术的前世今生
- Python计算限制性核酸内切酶切割后的核酸片段及其片段分子量