哇乍一看这题怎么这么水啊,但是我看到了最后一行的时候才发现其实不然(滑稽)

它要求的答案是所有数的平方和!!!

首先裸裸的数位 Dp 求出了满足条件的数的个数(定义 dp [ 位数 ] [ 每位和%7 ] [ 数值%7 ]),记为 Cnt,那么我们现在考虑如何将答案给搞出来吧!

我们可以利用 Dfs 的步骤,考虑将第 Dep 位的答案用 Dep 减1位更新

首先很好更新的是前 Dep 位的所有合法数字和,我们考虑所有数字的和一定可以拆分成:

所以显然第 Dep 位数为 i 时对于答案的贡献就是 i *(Dfs 下一位所得到的合法数的个数)* (10 的 Dep 次方),记为 Sum

其次考虑如何更新 Dep 位对于平方和的贡献啦!首先前 Dep 位组成的一个数的平方一定是:

由于我们只用加上 i 对当前位的贡献,所以这个时候我们只用关心与当前位 i 有关的东西, 管都不用管,直接展开换成  就好啦!

那么 Cnt 个数呢?这个时候 Dep 位  的贡献就多了 Cnt 倍,对吧,所以

推就是了

AC码:

# include <bits/stdc++.h>const  long long  mod = 1e9 + 7 ;long long  powx [ 30 ] , dig [ 30 ] , x , y ;
int  T ; struct  Node {long long  cnt , sum , sqs ;
}
dp [ 25 ] [ 20 ] [ 20 ] ;Node  dfs ( int  dep , int  res , int  num , int  lim ) {if ( dep == 0 ) {Node  tmp = ( Node ) { 0 , 0 , 0 } ;if ( num != 0  &&  res != 0 )  tmp . cnt = 1 ;return  tmp ;}if ( ! lim  &&  dp [ dep ] [ res ] [ num ] . cnt != - 1 )  return  dp [ dep ] [ res ] [ num ] ;long long  i = lim ? dig [ dep ] : 9 ;Node  ans ;ans . cnt = ans . sum = ans . sqs = 0 ;for ( ; i >= 0 ; i -- ) {if ( i != 7 ) {Node  tmp = dfs ( dep - 1 , ( res * 10 + i ) % 7 , ( num + i ) % 7 , lim  &&  i == dig [ dep ] ) ;ans . cnt = ( ans . cnt + tmp . cnt ) % mod ;ans . sum = ( ( ans . sum + ( i * powx [ dep - 1 ] % mod * tmp . cnt ) % mod ) % mod + tmp . sum ) % mod ;ans . sqs = ( ( ans . sqs + tmp . sqs + ( 2 * i * powx [ dep - 1 ] % mod * tmp . sum ) % mod ) % mod + ( i * powx [ dep - 1 ] % mod * tmp . cnt % mod * powx [ dep - 1 ] % mod * i % mod ) % mod ) % mod ;}}if ( ! lim )  dp [ dep ] [ res ] [ num ] = ans ;return  ans ;
}long long  solve ( long long  x ) {memset ( dp , - 1 , sizeof ( dp ) ) ;int  cnt = 0 ; while ( x ) {dig [ ++ cnt ] = x % 10 ; x /= 10 ; }return  dfs ( cnt , 0 , 0 , 1 ) . sqs ;
}void  init ( ) {powx [ 0 ] = 1 ;for ( int  i = 1 ; i <= 19 ; i ++ )powx [ i ] = ( 1ll * powx [ i - 1 ] * 10 ) % mod ;
}int  main ( ) {init ( ) ;scanf ( "%d" , & T ) ;for ( int  i = 1 ; i <= T ; i ++ ) {std :: cin >> x >> y ;std :: cout << ( ( solve ( y ) - solve ( x - 1 ) ) % mod + mod ) % mod << std :: endl;}return  0 ;
}

【Hdu】4705 恨7不成妻相关推荐

  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)

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

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

  4. Acwing1086. 恨7不成妻(未解决)

    Acwing1086. 恨7不成妻 题意: 问一个区间内与7无关的整数的平方和 与7有关包括: 1.整数中某一位是 7: 2.整数的每一位加起来的和是 7 的整数倍: 3.这个整数是 7 的整数倍. ...

  5. 【数位DP】恨7不成妻

    [数位DP]恨7不成妻 时间限制: 1 Sec  内存限制: 128 MB 提交: 8  解决: 4 [提交] [状态] [命题人:admin] 题目描述 单身! 依然单身! 吉哥依然单身! DS级码 ...

  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. mysql可以做日期处理吗_mysql可以做日期处理吗
  2. 六:Dubbo与Zookeeper、SpringMvc整合和使用
  3. CF - 741(C. Arpa’s overnight party and Mehrdad’s silent entering) 二分图构造
  4. LiveVideoStack Meet | 苏州:视频会议研发中心一日游
  5. Oracle笔记-Oracle基本结构及安装启动(windows版)
  6. python异常处理_Python学习点滴04 - 学会异常处理(2)
  7. @PostConstruct、@PreDestroy注解介绍及Spring中@PostConstruct、constructor、@Autowired的顺序
  8. php 发送多个,向多个地址发送邮件的php类
  9. python求众数程序_求众数(python实现)
  10. SQL Server 存储
  11. 发现一个特给力的编写HTML/CSS的插件——Zen Coding
  12. 计算机基础多选试题及答案,计算机基础试题及答案
  13. 【转载】红外遥控HS0038B接法
  14. vant中picker选择器
  15. 傅里叶分析之掐死教程(完整版)(转)
  16. Raft 共识算法3-日志复制
  17. 低代码平台要怎么选?便宜其实也有好货!
  18. 简易处理字典MDX文件的方法
  19. 花火之声不闻于耳 [线段树]
  20. 【有利可图网】双十一“亮眼”设计大赏来了!!

热门文章

  1. 阿里云服务器ECS带宽计费模式租用价格表
  2. 计算机专业的自我介绍英语翻译,电气工程及其自动化英语翻译,大学生自我介绍带翻译?...
  3. 微信小程序常识——只需4个文件即可构成一个完整的微信小程序项目
  4. Java项目一之实现家庭收入支出登记系统
  5. Gromacs操作心得
  6. 日常起居六忌是什么?
  7. 转动“魔方” 探秘融云消息管理服务先进性
  8. 用windbg寻找设备树根节点
  9. 推荐一款来电秀App 最来电
  10. jQuery元素操作和尺寸位置