HDU 4507 吉哥系列故事――恨7不成妻 数位DP
吉哥系列故事——恨7不成妻
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4531 Accepted Submission(s): 1480
依然单身!
吉哥依然单身!
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无关的数字的平方和。
236 221 0
ans.num = ( ans.num + temp.num ) % MOD;
ans.sum = ( ans.sum + ((c[pos]*i)%MOD*temp.num%MOD + temp.sum)%MOD )%MOD;
//平方和式子太长分开写(加上num个数的平方和): ans.sqsum = (ans.sqsum + ((i*c[pos]%MOD)*i%MOD*c[pos]%MOD * temp.num )%MOD )%MOD;ans.sqsum = ( ans.sqsum + (temp.sqsum + ((2*c[pos]*i)%MOD*temp.sum)%MOD) ) % MOD;
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int MOD = 1e9+7;
int a[25];
LL c[25];struct Node
{LL num;LL sum;LL sqsum;Node(){}Node(LL a , LL b , LL c):num(a),sum(b),sqsum(c){}
}dp[25][8][8];Node dfs( int pos , int sumper , int val , bool limit ){ if( pos == -1 ) return Node( sumper && val , 0 , 0 );if( !limit && dp[pos][sumper][val].num != -1 ) return dp[pos][sumper][val];int up = limit ? a[pos] : 9;Node ans = Node(0,0,0);for( int i = 0 ; i <= up ; i++ ){if( i == 7 ) continue ;Node temp = dfs( pos - 1 , (sumper+i)%7 , (val*10+i)%7 , limit && i == up); //这里就相当于于模板ans += dfs(...);只不过用了结构体要分开赋值。 ans.num = ( ans.num + temp.num ) % MOD ; //与7无关的个数和ans.sum = ( ans.sum + ((c[pos]*i)%MOD*temp.num%MOD + temp.sum)%MOD )%MOD; //与7无关的数的和//平方和式子太长分开写(加上num个数的平方和): ans.sqsum = (ans.sqsum + ((i*c[pos]%MOD)*i%MOD*c[pos]%MOD * temp.num )%MOD )%MOD; ans.sqsum = ( ans.sqsum + (temp.sqsum + ((2*c[pos]*i)%MOD*temp.sum)%MOD) ) % MOD; //两个共同组成与7无关的数的平方和}if( !limit ) dp[pos][sumper][val] = ans ;return ans ;
}void init(){ //c[i] = 10^i ;c[0] = 1;for( int i = 1 ; i < 20 ; i++ ){c[i] = (c[i-1]*10) % MOD ;}
}LL solve( LL x ){int tot = 0 ; while( x ){a[tot++] = x % 10 ;x /= 10;} Node ans = dfs( tot - 1 , 0 , 0 , true ) ;return ans.sqsum;
}int main(){ios_base::sync_with_stdio(false); cin.tie(0);int T;cin >> T;LL l , r ;memset(dp,-1,sizeof(dp));init();while( T-- ){cin >> l >> r ;cout << ( solve(r) - solve(l-1) + MOD ) % MOD << endl ;}return 0 ;
}
HDU 4507 吉哥系列故事――恨7不成妻 数位DP相关推荐
- 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这两个数,发现: ...
- 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 ...
最新文章
- 人体姿态和形状估计的视频推理:CVPR2020论文解析
- CNCC技术论坛丨联邦学习冲刺人工智能“最后一公里”!
- C++ typeid操作符
- Hadoop LZO的安装与配置
- java nio2 iocp_基于JDK7 NIO2的高性能web服务器实践之二(转)
- SAP Hybris Enterprise Commerce的一些有用链接 - 保证持续更新
- 空心点_空心砖的新玩法,看完大开眼界
- React中解决样式丢失问题
- Two Strings(CF-223B)
- Eclipse自动生成方法注释 快捷键
- PKCS #1 RSA Encryption Version 1.5
- windows server 2008 r2 安装
- 如何在苹果MacBook Pro上打开和使用Touch Bar Zoom?
- word、PDF、html、chm 文件的转换
- python网页编辑器-Python Jupyter 网站编辑器
- AI+IoT行业“飞轮效应”凸显,全球云服务能力将发挥关键作用
- 月薪2w的前端工程师,必盘的实战项目
- linux nodejs 502错误,node.js应用程序与nginx 502错误的网关错误
- 共探机遇 2018中国产业互联网化纤创新者大会华丽启幕
- SAN 光纤交换机配置远距离级联(EF)操作