单身! 
  依然单身! 
  吉哥依然单身! 
  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

代码:

/*总状态转移思路
(1) ans.cnt += tmp.cnt
(2) ans.s += tmp.s + [ i*10^p ]*tmp.cnt
(3) ans.ss += tmp.ss + 2*(i*10^p)*tmp.s + [(i*10^p)^2]*tmp.cnt(平方和公式)
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstring>
using namespace std;
typedef long long ll;const int N = 20;
const int mod = 1e9 + 7;struct Node
{ll cnt,s,ss;                        //与 7 无关的数的个数,与 7 无关的数的和,与 7 无关的数的平方和Node() { cnt = -1; s = 0, ss = 0; } //默认的构造函数,初始化cnt顺便标记是否访问过
}dp[N + 2][10][10];ll p[N + 2],dig[N + 2];                 //保存10的次方 PS:记得取模,保存数字的每一个数位上的数void init()
{p[1] = 1;                           //因为我的数字的个位用dig[1]表示,所以我用p[1]记录10的0次方for (int i = 2; i < N; ++i) p[i] = (p[i - 1] * 10) % mod;
}inline ll EX(ll x)                      //求平方
{x %= mod;return (x*x) % mod;
}Node dfs(int len, int r1, int r2, bool up)
{if (len == 0){Node tmp;tmp.cnt = (r1&&r2);             //数位和不是7的倍数且数字不是7的倍数,因为这里已经完成了一组排列,只要判断这里的就行了所以&&tmp.s = tmp.ss = 0;return tmp;}if (!up&&dp[len][r1][r2].cnt != -1)return dp[len][r1][r2];int n =up?dig[len]:9;Node ans; ans.cnt = 0;for (int i = 0; i <= n; ++i){if (i == 7) continue;Node tmp = dfs(len - 1, (i + r1) % 7, (i + r2 * 10) % 7, up&&i == n);               //得到子状态ans.cnt = (ans.cnt + tmp.cnt) % mod;                                                //更新个数ans.s = (ans.s + (tmp.s + (i*p[len]) % mod*tmp.cnt%mod) % mod) % mod;               //更新数字ans.ss = (ans.ss + (tmp.ss + ((2LL * i*p[len] % mod)*tmp.s) % mod) % mod) % mod;    //式子太长分开写ans.ss = (ans.ss + (EX(i*p[len])*tmp.cnt) % mod) % mod;}if (!up) dp[len][r1][r2] = ans;return ans;
}ll cal(ll x)
{int len = 0;while (x){dig[++len] = x % 10;x /= 10;}return dfs(len, 0, 0, 1).ss;
}int main()
{init();int T;scanf("%d", &T);while (T--){ll l, r;scanf("%lld %lld", &l, &r);printf("%lld\n", ((cal(r) - cal(l - 1)) % mod + mod) % mod);}return 0;
}

HDU4507吉哥系列故事――恨7不成妻相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 吉哥系列故事——恨7不成妻 HDU - 4507

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

最新文章

  1. Python——eventlet.websocket
  2. ubuntu 安装docker_Docker: 教程04 - (初始化安装之在 Ubuntu 安装Docker CE)
  3. 2021年技术人员的最佳Linux桌面前5名
  4. Smack Component 多线程环境下的问题解决
  5. Python数据分析pandas之分组统计透视表
  6. HarmonyOS之深入解析WLAN的功能和使用
  7. android 定时打电话教程
  8. SAP customer engagement center Fiori界面登录后的处理
  9. Qt5.7+Opencv2.4.9人脸识别(五)人脸识别
  10. 【[NOI2005]瑰丽华尔兹】
  11. 谷歌及360浏览器插件制作
  12. U盘中毒,文件夹或文件打不开的解决方法--实用
  13. 新爹手记-分娩篇-出生前一天(原汁原味流水版)
  14. 1688图片批量采集技巧
  15. 狂肝10个月手搓GPU,他们在《我的世界》里面玩《我的世界》
  16. 数据分析师年薪50w起 人才缺口极大
  17. Java钉钉markdown模版,钉钉 dingding dingtalk prometheus报警模板template
  18. HCIA网络基础11-IP路由原理及静态路由
  19. 【IM】网易lM聊天列表UI
  20. APP的图标测试之震惊!双11快到了,你的app在偷偷更换图标?

热门文章

  1. Debezium UI 搭建
  2. 计算机argument,编程中argument什么意思?一定要准确..
  3. 关于 UGUI 字体花屏或乱码
  4. Echarts legend属性使用
  5. 媒体服务器(MS)抢救记
  6. python无法print彩色字体
  7. 数值分析3-解线性方程组的高斯消去法、LU分解法及列主元消去法的matlab程序和调试方法
  8. 显示屏在线测试软件,Monitor Test Screens显示器测试
  9. 如何快速提高个人的计算机水平,如何进一步提高计算机水平
  10. 腾讯云备案流程指引 腾讯云备案教程 适用于首次备案