【数位DP】恨7不成妻

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 4
[提交] [状态] [命题人:admin]

题目描述

单身!
依然单身!
吉哥依然单身!
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无关的数字的平方和。

输入

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

输出

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

样例输入

复制样例数据

3
1 9
10 11
17 17

样例输出

236
221
0
题解:https://blog.csdn.net/zxyoi_dreamer/article/details/82897281AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const ll mod=1e9+7;
 5 ll l,r,decimal[25],a[25];
 6 struct node
 7 {
 8     ll sum0,sum1,sum2;
 9     node():sum0(0),sum1(0),sum2(0) {}
10 }dp[25][10][10];
11 node dfs(int pos,int addremain,int numremain,bool limit)
12 {
13     if(pos==0)
14     {
15         node cnt;
16         if(addremain && numremain) cnt.sum0=1;
17         return cnt;
18     }
19     if(dp[pos][addremain][numremain].sum0 && !limit) return dp[pos][addremain][numremain];
20     node res;
21     ll up=limit?a[pos]:9;
22     for(ll i=0;i<=up;i++)
23     {
24         if(i==7) continue;
25         node tmp=dfs(pos-1,(addremain+i)%7,(numremain*10+i)%7,i==a[pos]&&limit);
26         res.sum0=(res.sum0+tmp.sum0)%mod;
27         res.sum1=(res.sum1+tmp.sum1+decimal[pos-1]*i%mod*tmp.sum0%mod)%mod;
28         res.sum2=(res.sum2+tmp.sum2+2*i%mod*decimal[pos-1]%mod*tmp.sum1%mod
29                   +i*i%mod*decimal[pos-1]%mod*decimal[pos-1]%mod*tmp.sum0%mod)%mod;
30     }
31     if(!limit) dp[pos][addremain][numremain]=res;
32     return res;
33 }
34 ll solve(ll val)
35 {
36     int len=0;
37     while(val)
38     {
39        a[++len]=val%10;
40        val/=10;
41     }
42     return dfs(len,0,0,true).sum2;
43 }
44 int main()
45 {
46     decimal[0]=1;
47     for(int i=1;i<=20;i++) decimal[i]=decimal[i-1]*10%mod;
48     int t;
49     for(scanf("%d",&t);t;t--)
50     {
51         scanf("%lld %lld",&l,&r);
52         printf("%lld\n",(solve(r)-solve(l-1)+mod)%mod);
53     }
54     return 0;
55 }
56 //1 1000000000000000000

View Code

转载于:https://www.cnblogs.com/lglh/p/11105986.html

【数位DP】恨7不成妻相关推荐

  1. acwing1086||HDU4507数位dp[恨7不成妻]

    题目链接 题目大意:给你区间∈[l,r]\in[l,r]∈[l,r],问不满足 1.本身含有7;1.本身含有7;1.本身含有7; 2.每个数位和是7的倍数2.每个数位和是7的倍数2.每个数位和是7的倍 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. ElasticSearch性能优化策略【转】
  2. 使用resnet训练CIFAR10
  3. 用 Java 实现断点续传 (HTTP)
  4. 备考一天速通计算机三级网络技术
  5. 随e行安全层在与远程计算机初始化,g3随e行怎么用_g3随e行怎么安装_随e行wlan无法登陆...
  6. JAVA 通过 Socket 实现 TCP 编程
  7. MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
  8. Win10离线 安装.net frame3.5
  9. 机器学习——卷积神经网络(CNN)
  10. FHIR标准和国际基于FHIR的互联互通实践(1):如何定义互联互通?
  11. 查看mysql宕机原因_记录一次mysql宕机的解决办法
  12. sever串口wifi拓展板_基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)...
  13. 读书笔记《深度学习与图像识别原理与实践 大白话讲解对小白易懂》2022-8-5
  14. 软件实施过程、软件实施工程师职责
  15. ArduCopter——ArduPilot——航点导航WPNav(一)
  16. 查看Win7电脑密钥期限
  17. web前端面试总结(自认为还算全面哈哈哈哈哈!!!!)
  18. 嵌入式学习(四)——串口
  19. 多列 count(distinct)改写优化
  20. matlab starcat_维纳滤波和编码曝光PSF去除运动模糊【matlab】

热门文章

  1. 国外游戏开发商吐槽:开发VR游戏付账单的钱都赚不到
  2. 解决 mcrypt.h not found
  3. 过程改进的疑惑 - 习惯能改么?
  4. udp linux 获取本机ip
  5. [Python] L1-004. 计算摄氏温度-PAT团体程序设计天梯赛GPLT
  6. 蓝桥杯 ADV-95 算法提高 字符串比较
  7. 蓝桥杯 ADV-92 算法提高 求最大公约数
  8. PAT 乙级 1031. 查验身份证(15) Java版
  9. 【iOS开发】使用XCode 10添加Launch Image(启动图片)
  10. 如何去除chrome最常访问的网页