hdu4507吉哥系列故事——恨7不成妻 (数位dp)
依然单身!
吉哥依然单身!
DS级码农吉哥依然单身!
所以,他生平最恨情人节,不管是214还是77,他都讨厌!
吉哥观察了214和77这两个数,发现:
2+1+4=7
7+7=7*2
77=7*11
最终,他发现原来这一切归根到底都是因为和7有关!所以,他现在甚至讨厌一切和7有关的数!
什么样的数和7有关呢?
如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关——
1、整数中某一位是7;
2、整数的每一位加起来的和是7的整数倍;
3、这个整数是7的整数倍;
现在问题来了:吉哥想知道在一定区间内和7无关的数字的平方和。
感悟:数位dp还是用记忆化搜索好。思路:用dp[i][j][k]表示第i位(这里的前i位指的是从len位循环到第i位的状态)前面几位位数和%7的值为j,前面所代表十进制数%7的状态。这个状态用一个结构体node 表示,node里面记录的是这个状态下后面符合条件的数的个数,和,平方和。为什么要记录这三个呢?是因为平方和能用它们三个表示。对于一个十进制数,比如756,756^2=(700+56)^2=700^2+56^2+2*700*56,所以就可以推得规律:ans.cnt+=temp.cnt;ans.sum+=temp.cnt*j*p[pos-1 ]+temp.sum; //p[pos-1]=10^(pos-1) ans.sqsum+=temp.sqsum+2*(p[pos-1]*temp.sum*j)+p[pos-1]*p[pos-1]*temp.cnt*j*j;
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<bitset>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ldb;
#define inf 99999999
#define pi acos(-1.0)
#define MOD 1000000007
struct node{ll cnt; //个数ll sum; //总和ll sqsum; //所有符合数的前面部分平方和
}dp[25][11][11]; //前i位,位数和%7为j,值和%7为kll p[25];
void init(){int i,j;p[0]=1;for(i=1;i<=20;i++){p[i]=(p[i-1]*10)%MOD;}
}int wei[30];
node dfs(ll pos,ll num,ll sum,ll flag)
{int i,j;node ans;ans.cnt=ans.sum=ans.sqsum=0;if(pos==0){if(flag=1 && num!=0 && sum!=0){ans.cnt=1;}return ans;}if(!flag && dp[pos][num][sum].cnt!=-1){return dp[pos][num][sum];}int ed;if(flag)ed=wei[pos];else ed=9;for(j=0;j<=ed;j++){if(j==7)continue;node temp=dfs(pos-1,(j+num)%7,(sum*10+j)%7,flag&&(j==ed) );ans.cnt+=temp.cnt;ans.cnt%=MOD;ans.sum+=(temp.cnt*j%MOD*p[pos-1 ]%MOD+temp.sum )%MOD;ans.sum%=MOD;ans.sqsum+=(temp.sqsum+2*(p[pos-1]*temp.sum%MOD*j)%MOD )%MOD;ans.sqsum%=MOD;ans.sqsum+=(p[pos-1]*p[pos-1]%MOD*temp.cnt%MOD*j*j)%MOD;ans.sqsum%=MOD;}if(!flag){dp[pos][num][sum]=ans;}return ans;
}node solve(ll x)
{int i,j,k,len=0;ll t=x;while(t){wei[++len]=t%10;t/=10;}for(i=0;i<20;i++){for(j=0;j<9;j++){for(k=0;k<9;k++){dp[i][j][k].cnt=-1;}}}return dfs(len,0,0,1);}int main()
{int i,j,T;ll n,m;init();scanf("%d",&T);while(T--){scanf("%lld%lld",&m,&n);printf("%lld\n",((solve(n).sqsum-solve(m-1).sqsum)%MOD+MOD)%MOD );}
}
hdu4507吉哥系列故事——恨7不成妻 (数位dp)相关推荐
- HDU-4507 吉哥系列故事――恨7不成妻 (数位dp)
J - 吉哥系列故事――恨7不成妻 HDU - 4507 题解:数位dp 和简单的数位dp不同,这道题要算所有合法数的平方和 考虑到一个数可以写成X=ΣAi*Pi,(其中Ai为X每一位的值,Pi=10 ...
- HDU4507 吉哥系列故事――恨7不成妻 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:求[L,R](1 <= L <= R <= 10^18)区间内和7无关的 ...
- 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的整数倍: 题目分析:抛去 ...
- HDU4507吉哥系列故事――恨7不成妻
单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+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 ...
- 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 ...
最新文章
- CF-311B Cats Transport(斜率优化DP)
- 11岁美国男孩用玩具熊“黑”了国际网络安全大会
- 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
- 转载 干货 | 1400篇机器学习的文章中,这10篇是最棒的!
- java 设计模式学习笔记十 bridge桥模式
- 《51单片机应用开发从入门到精通》——2.6 中断控制功能的作用
- 缴纳满15年养老保险退休金每月1200块钱左右,值得缴吗?
- [nodejs]国内npm安装nodejs modules失败的几个解决方案
- OpenCV辅助对象(help objects)(3)——Ptr
- Unity开发《一起来捉妖》教程 | 1.陀螺仪控制相机
- adb server version (31) doesn‘t match this client (39) 解决方案
- 20210520:人脸识别-口罩mask快速抠取
- 二进制和十六进制的转换操作
- Java ServiceLoader使用和解析
- uni.navigateTo页面跳转时传对象参数
- 7-1 图的先深搜索+7-2 图的先广搜索
- 掌阅书架上的书怎么删除
- ByteBuffer常用方法与分析
- 昕友亿方InfoPath智能平台软件视频教程公开,4分钟学会轻松定制企业级应用软件
- OpenHarmony内核开发
热门文章
- 教你如何迅速秒杀掉:99%的海量数据处理面试题(转)
- PFLD: A Practical Facial Landmark Detector
- java面试设计题:羽毛球馆管理员;
- 自顶向下 | 带你遨游运输层
- 大脸猫:网站优化之发现一直有人抄写自己的原创文章,该怎么办?
- Android 8.0解决的OkHttp问题:A connection to xxx was leaked. Did you forget to close a response body?
- python网络爬虫(第十一章:Scrapy终端与核心组件)
- 血管紧缩素Angiotensinogen(1-14), porcine、20845-02-7
- 80老翁谈人生(158):老翁问责进行时
- 按照指定起始和截止时间分割视频