不要666升级版

∑(pre+suc)2n×pre2+2×pre∑suc+∑suc2\sum(pre + suc) ^ 2\\ n \times pre ^ 2 + 2 \times pre \sum suc + \sum suc ^ 2\\ ∑(pre+suc)2n×pre2+2×pre∑suc+∑suc2

∑(pre+suc)3∑(pre3+3×pre2×suc+3×pre×suc2+suc3)n×pre3+3×pre2∑suc+3×pre∑suc2+∑suc3\sum (pre + suc) ^ 3\\ \sum \left(pre ^ 3 + 3 \times pre ^ 2 \times suc + 3 \times pre \times suc ^ 2 + suc ^ 3\right)\\ n \times pre ^ 3 + 3 \times pre ^ 2 \sum suc + 3 \times pre \sum suc ^ 2 + \sum suc ^ 3\\ ∑(pre+suc)3∑(pre3+3×pre2×suc+3×pre×suc2+suc3)n×pre3+3×pre2∑suc+3×pre∑suc2+∑suc3

由此维护n,sum,sum2,sum3n, sum, sum^ 2, sum ^ 3n,sum,sum2,sum3即可,定义f[i][j][k]f[i][j][k]f[i][j][k],为枚举到第iii为,数位和为jjj,数字余kkk的状态,记忆化搜索即可。

#include <bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod;
}inline int sub(int x, int y) {return x >= y ? x - y : x - y + mod;
}int cnt, num[20], p[20];struct Res {int cnt = -1, sum1, sum2, sum3;
}f[20][10][10];Res dfs(int pos, int sum, int remain, int flag) {if (!pos) {if (sum != 0 && remain != 0) {return {1, 0, 0, 0};}else {return {0, 0, 0, 0};}}if (!flag && f[pos][sum][remain].cnt != -1) {return f[pos][sum][remain];}Res ans = {0, 0, 0, 0};int nex = flag ? num[pos] : 9;for (int i = 0; i <= nex; i++) {if (i == 6) {continue;}Res cur = dfs(pos - 1, (sum + i) % 6, (remain * 10 + i) % 6, i == nex && flag);int s = 1ll * i * p[pos] % mod;ans.cnt = add(ans.cnt, cur.cnt);ans.sum1 = add(ans.sum1, add(1ll * s * cur.cnt % mod, cur.sum1));ans.sum2 = add(add(ans.sum2, 1ll * cur.cnt * s % mod * s % mod), add(cur.sum2, 2ll * s % mod * cur.sum1 % mod));ans.sum3 = add(ans.sum3, add(add(1ll * cur.cnt * s % mod * s % mod * s % mod, 3ll * s % mod * s % mod * cur.sum1 % mod), add(3ll * s % mod * cur.sum2 % mod, cur.sum3)));}if (!flag) {f[pos][sum][remain] = ans;}return ans;
}int calc(long long x) {cnt = 0;while (x) {num[++cnt] = x % 10;x /= 10;}return dfs(cnt, 0, 0, 1).sum3;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);p[1] = 1;for (int i = 2; i < 20; i++) {p[i] = 1ll * p[i - 1] * 10 % mod;}long long l, r;while (scanf("%lld %lld", &l, &r) != EOF) {printf("%lld\n", sub(calc(r), calc(l - 1)));}return 0;
}

不要666升级版(数位DP,三次方和)相关推荐

  1. 输入一个三位数,求个个数位数字的三次方之和,并判断和是否与该数相同

    解题思路: 先把三位数(n)的3个数位值算出来 然后求数位数字的三次方之和 最后判断数位数字的三次方之和(sum)是否与该数(n)相同 代码: # 输入一个三位数,求个个数位数字的三次方之和,并判断和 ...

  2. 牛客网暑期ACM多校训练营(第三场): C. Chiaki Sequence Reloaded(数位DP)

    题目描述 Chiaki is interested in an infinite sequence a1, a2, a3, ..., which defined as follows: Chiaki ...

  3. bzoj 4318 osu 【三次方问题】【dp】

    二次方的问题可以说是经典了,三次方yy一下也就出来了. (x+1)^3=x^3+3x^2+3x+1 所以维护x^2 x的期望值.注意x^2的期望值不等于x期望值的平方. #include<cst ...

  4. 动态规划专题(三)——数位DP

    前言 数位DPDPDP 真的是最恶心的DPDPDP. 简介 看到那种给你两个数,让你求这两个数之间符合条件的数的个数,且这两个数非常大,这样的题目一般就是 数位DPDPDP 题. 数位DPDPDP一般 ...

  5. 数位 DP 入门 (不要 62+windy 数)

    \[I\] 平常的做法是设 \(f_{i,j}\) 为 \(0\)~\(j \times 10^{i-1}\) 的合法个数,这里用某种神奇而快速的做法. 简化题意: 不要 \(6\ 2\) 连在一起的 ...

  6. SPOJ - BALNUM Balanced Numbers(数位dp+进制转换)

    题目链接:点击查看 题目大意:给出平衡数的定义:每一个偶数出现的次数必须是奇数次,每一个奇数出现的次数必须是偶数次,求给定区间中有多少个平衡数 题目分析:数位dp,这个题目就难在怎么确定状态转移,本来 ...

  7. AcWing1081.度的数量(数位DP)题解

    题目传送门 求给定区间 [X, Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和. 例如,设 X=15,Y=20,K=2,B=2X=15,Y=20,K=2,B=2, ...

  8. 数位DP———POJ 3208 启示录

    POJ3208 启示录 题目传送门 题目大意:我们称只要某数字的十进制表示中有三个连续的6,我们就称它为"魔鬼数",比如:666,1666,6663,16666 等.现给出一个数X ...

  9. 数位 dp 相邻位数字差值的绝对值不能超过 2_干货来了!13种行测数字推理技巧总结...

    数学除了公式要记忆,解题技巧同样需要"记忆"所谓的解题技巧来源于实战,运用于实战 它是在通过大量做题.充分理解和把握命题规律的基础上形成的解题方法论今天陕西京佳教育为大家盘点13种 ...

最新文章

  1. php写邮件空格_PHP 邮件漏洞小结
  2. html保存blob,HTML文本图像并保存为Blob到数据库
  3. 【自译】八步成为数据科学家
  4. SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
  5. 【线上分享】探讨TensorRT加速AI模型的简易方案:以图像超分为例
  6. 各种java生成word解决方案的优缺点对比
  7. UrlRewrite(URL重写)--ASP.NET中的实现
  8. How does model reference pass from app view to master view
  9. linux共享磁盘给指定ip,linux想挂载通过ipsan协议推送上来的磁盘,两个ip共分配了21个未分区的盘,...
  10. 阿里面试题BIO和NIO数量问题附答案和代码
  11. 自适应自旋锁--吞吐量和延迟以及管理开销的折中
  12. vc6,vc.net,vc7,vc8,vc9,c,c++,c#的区别与联系
  13. 软件的生命周期分为哪几个阶段
  14. Texas Instruments Website
  15. 自适应中值滤波器和自适应局部(均值)滤波器的设计 python+matlab各实现
  16. vscode鼠标滚轮调整字体大小
  17. 腾讯实习生笔试到面试的经历
  18. HDFS和FastDFS的上传、下载效率对比测试
  19. 高数_第3章重积分__二重积分_怎样交换积分次序
  20. 【源码】声明32位和64位Access、Excel等VBA兼容的API函数的方法

热门文章

  1. 计算机网络的网络层功能在内完成,计算机网络习题及答案
  2. linux ini文件,Shell script - Linux下解析ini配置文件
  3. 教程丨亿万网友一起换头像欢庆新中国成立70周年,就差你了!
  4. 世纪渣男何书桓! | 今日最佳
  5. 阿里日均纳税超1.4亿;AI换脸骗过美侦查;日本民众哄抢令和报纸;辟谣教学楼发现大量金矿;上海拨通首个5G通话;这就是今日大新闻...
  6. 一堂儿童科学实验课引起的思考:数学和化学有什么关系?
  7. 如何解开机器学习的面纱?
  8. linux浏览器不能播放音频文件夹,在html中插入音频文件在浏览器中播放音频文件的兼容性问题...
  9. android http 三次 握手,面试解析:3次握手与4次挥手
  10. c#web服务器 虚拟目录,C#建立自己的Web服务器