2.SGU 258
problem
一个2*n位数,前n位数各位数和与后n位数各位数和相等,是lucky数。一个2*n位数,改变一个数字后,依然是2*n位(改前改后都没有前导零),并且是lucky数,则改之前的数称之为近似lucky数。求[l, r] 区间内,有多少近似lucky数。
think
dp[枚举到那一位][这个数是2*n位数][sum(前n位各位数和-后n位数各位数和)][more(最多增加)][less(最多减少)]sum可能<0 所以给他都+45more = max(9-前n位某个数, 后n位某个数)less = max(首位-1, 前n位且非首位的某个数, 9-后n位某个数) //因为首位不能变成0 所以首位-1答案是sum!=45(是0 的话就不用变了) && sum+more >=45 && sum-less<=45
code
problem
[l, r] 区间内,有多少个数分解成K个不同B的次方。
think
平时写数位DP,习惯把数位按十进制分解,这道题,分解成B进制,就可以了。然后看有多少个数里面有K个1 其他都是0.
code
1554

被折叠的 条评论
为什么被折叠?



