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

输入数据的第一行是case数T(1 <= T <= 50),然后接下来的T行表示T个case;每个case在一行内包含两个正整数L, R(1 <= L <= R <= 10^18)。

Output

请计算[L,R]中和7无关的数字的平方和,并将结果对10^9 + 7 求模后输出。

Sample Input

    
3 1 9 10 11 17 17

Sample Output

    
236 221 0

Source

2013腾讯编程马拉松初赛第一场(3月21日)

思路:数位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)相关推荐

  1. HDU 4507 吉哥系列故事――恨7不成妻 数位DP

    吉哥系列故事--恨7不成妻 Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  2. HDU - 4507 吉哥系列故事——恨7不成妻(数位dp)

    题目链接:点击查看 题目大意:给出闭区间[l,r],求出区间内与7不沾边的数的平方和 与7有关的条件: 整数中某一位是7: 整数的每一位加起来的和是7的整数倍: 这个整数是7的整数倍: 题目分析:抛去 ...

  3. HDU-4507 吉哥系列故事――恨7不成妻 (数位dp)

    J - 吉哥系列故事――恨7不成妻 HDU - 4507 题解:数位dp 和简单的数位dp不同,这道题要算所有合法数的平方和 考虑到一个数可以写成X=ΣAi*Pi,(其中Ai为X每一位的值,Pi=10 ...

  4. HDU 4507 吉哥系列故事——恨7不成妻 详解(变态数位DP)

    Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...

  5. HDU 4507 吉哥系列故事――恨7不成妻 (平方拆解 + *数位DP 总结)

    单身!  依然单身!  吉哥依然单身!  DS级码农吉哥依然单身!  所以,他生平最恨情人节,不管是214还是77,他都讨厌!    吉哥观察了214和77这两个数,发现:  2+1+4=7  7+7 ...

  6. hdu4507吉哥系列故事——恨7不成妻 (数位dp)

    Problem Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: ...

  7. HDU 4507 吉哥系列故事——恨7不成妻(数位DP)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove Tencent马拉松初赛第二场的鬼畜题... 其实 ...

  8. HDU4507 吉哥系列故事――恨7不成妻 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题意:求[L,R](1 <= L <= R <= 10^18)区间内和7无关的 ...

  9. 吉哥系列故事——恨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 ...

最新文章

  1. MFC中的CString.Format及CString,string,char*之间的转换
  2. iOS进阶之类扩展(Extension)(8)
  3. Jupyter 绘图怎么显示中文
  4. 字符串匹配之KMP(KnuthMorrisPratt)算法(图解)
  5. CAN笔记(22) 特殊协议
  6. C语言open()函数:打开文件函数(转)
  7. Kernel: Do NOT use global variable as possible as you can 尽量不使用全局变量
  8. 软媒魔方6.13正式版:软件管家开启多线程极速下载
  9. won10qualcomm atheros无线网卡驱动安装不了
  10. input输入框历史记录清除
  11. flash读取程序 msp430_MSP430内部FLASH详细操作
  12. 231 订单支付 苹果内购
  13. 网络分层和对应的协议列表
  14. Java double 保留一个小数、理解BigDecimal、Java解决精度问题
  15. 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
  16. matlab单边带调制器设计,通信系统综合设计与实践(基于MATLAB的单边带调制)研究.doc...
  17. EPLAN中断点使用方法1
  18. 存储系统性能影响因素(2)---固态硬盘
  19. 如何高效进行大规模分类?
  20. 幂等性问题以及处理方法

热门文章

  1. 面试中浅谈Spring IOC
  2. 虹科分享|硬件加密U盘|居家办公的网络安全:远程员工可以采取的步骤
  3. 请教100位行业专家后,我总结出第三方支付“断直连”的8大疑问!
  4. HTML5期末大作业:个人主页网站设计——服装明星主页(7页)表格带留言板带音乐
  5. Unity Shader variants (shader 变体)
  6. python长整数相乘_Python中的分数与整数相乘
  7. C/C++中的kbhit()函数与getch()函数
  8. 正则化贪心森林RGF(Regularized Greedy Forest)详解和实战
  9. 甲骨文收购kuku后首个完整财季净利润同比增25%
  10. 一个最简单的Lucene例子