HDU - 4507 吉哥系列故事――恨7不成妻 (数位DP)
Description
依然单身!
吉哥依然单身!
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无关的数字的平方和。
Input
Output
Sample Input
Sample Output
Source
思路:数位DP, 一个表示与7无关的个数,一个表示与7无关的数的和,7无关的数字的平方和。
难处理的是平方和,要从前两个推出来,就是将平方和拆出来就行了,还有乱mod不会过啊,
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long ll;
const int maxn = 20;
const ll mod = 1000000007ll;struct node {long long cnt;long long sum;long long sqsum;
} dp[maxn][10][10];
ll p[maxn];
int num[maxn];node dfs(int cur, int p1, int p2, int flag) {if (cur == -1) {node tmp;tmp.cnt = (p1 != 0 && p2 != 0);tmp.sum = tmp.sqsum = 0;return tmp;}if (!flag && dp[cur][p1][p2].cnt != -1)return dp[cur][p1][p2];int end = flag?num[cur]:9;node ans;node tmp;ans.cnt = ans.sqsum = ans.sum = 0;for (int i = 0; i <= end; i++) {if (i == 7)continue;tmp = dfs(cur-1, (p1+i)%7, (p2*10+i)%7, flag&&i==end);ans.cnt += tmp.cnt;ans.cnt %= mod;ans.sum += (tmp.sum+ ((p[cur]*i)%mod)*tmp.cnt%mod)%mod;ans.sum %= mod;ans.sqsum += (tmp.sqsum + ((2*p[cur]*i)%mod)*tmp.sum)%mod;ans.sqsum %= mod;ans.sqsum += (tmp.cnt*p[cur])%mod*p[cur]%mod*i*i%mod;ans.sqsum %= mod;}if (!flag)dp[cur][p1][p2] = ans;return ans;
}long long cal(long long m) {int cnt = 0;while (m) {num[cnt++] = m%10;m /= 10;}return dfs(cnt-1, 0, 0, 1).sqsum;
}int main() {int t;p[0] = 1;for (int i = 1; i < maxn; i++)p[i] = (p[i-1]*10) % mod;for (int i = 0; i < maxn; i++)for (int j = 0; j < 10; j++)for (int k = 0; k < 10; k++)dp[i][j][k].cnt = -1;cin >> t;while (t--) {ll l, r;cin >> l >> r;long long ans = cal(r);ans -= cal(l-1);ans = (ans%mod+mod)%mod;cout << ans << 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)
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 总结)
单身! 依然单身! 吉哥依然单身! 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 ...
最新文章
- MFC中的CString.Format及CString,string,char*之间的转换
- iOS进阶之类扩展(Extension)(8)
- Jupyter 绘图怎么显示中文
- 字符串匹配之KMP(KnuthMorrisPratt)算法(图解)
- CAN笔记(22) 特殊协议
- C语言open()函数:打开文件函数(转)
- Kernel: Do NOT use global variable as possible as you can 尽量不使用全局变量
- 软媒魔方6.13正式版:软件管家开启多线程极速下载
- won10qualcomm atheros无线网卡驱动安装不了
- input输入框历史记录清除
- flash读取程序 msp430_MSP430内部FLASH详细操作
- 231 订单支付 苹果内购
- 网络分层和对应的协议列表
- Java double 保留一个小数、理解BigDecimal、Java解决精度问题
- 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
- matlab单边带调制器设计,通信系统综合设计与实践(基于MATLAB的单边带调制)研究.doc...
- EPLAN中断点使用方法1
- 存储系统性能影响因素(2)---固态硬盘
- 如何高效进行大规模分类?
- 幂等性问题以及处理方法
热门文章
- 面试中浅谈Spring IOC
- 虹科分享|硬件加密U盘|居家办公的网络安全:远程员工可以采取的步骤
- 请教100位行业专家后,我总结出第三方支付“断直连”的8大疑问!
- HTML5期末大作业:个人主页网站设计——服装明星主页(7页)表格带留言板带音乐
- Unity Shader variants (shader 变体)
- python长整数相乘_Python中的分数与整数相乘
- C/C++中的kbhit()函数与getch()函数
- 正则化贪心森林RGF(Regularized Greedy Forest)详解和实战
- 甲骨文收购kuku后首个完整财季净利润同比增25%
- 一个最简单的Lucene例子