【数位DP】 HDU 4507 吉哥系列故事——恨7不成妻
通道:http://acm.hdu.edu.cn/showproblem.php?pid=4507
题意:给定区间[L, R]求区间内与7无关数的平方和。一个数当满足三个规则之一则认为与7有关:
1、整数中某一位是7;
2、整数的每一位加起来的和是7的整数倍;
3、这个整数是7的整数倍;
思路:dp[i][j][k],数位和模7余j,前面的和模7余k,一般的状态只能记录他有多少种方案,这里求平方和,那就只要记录前面的方案数,和,平方和,就能得到当前的状态了。递推见下面:
现在的和:i*10^p+x1+i*10^p+x2+.....=i*10^p*pre.n+(x1+x2+...xn)=i*10^p*pre.n + pre.sum
现在的平方和:(i*10^p+x1)^2+(i*10^p+x2)^2+(i*10^p+x3)^2+...=(i*10^p)^2*pre.n + 2*i*10^p*(x1+x2+...xn) + (x1^2+x2^2+...xn^2)
=(i*10^p)^2*pre.n + 2*i*10^p*pre.sum + pre.power
代码:https://github.com/Mithril0rd/Rojo/blob/master/hdu4507.cpp
TAG:转换思想,数D。