hdu6156】的更多相关文章

hdu6156 题意 求 \([2, 36]\) 进制下,给定区间内的数是回文数的个数.每存在一个回文数,答案加上该回文数的进制. 分析 10进制下回文数是 数位DP 很常见的问题,这道题只需要把在转化数字的时候转化成对应的进制即可. 多开一维数组表示某个进制下的方案数,\(dp\) 数组只需要一次初始化. code #include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[40][60][60]; //…
一.题目 二.思路 1.这是很明显的数位DP: 2.和以往数位DP不同的是,这里带了个进制进来,而以往做是纯十进制下或者纯二进制下做操作.但是,不管多少进制,原理都是一样的: 3.这里有个小坑,题目中说大于10的数用A.B.C.…….Z表示,那都是骗人的.分解给定数字的每一位数后,得到每一位的就是在给定进制下的该位的权值,压根不需要在数字.字母之间转来转去,纯数字娱乐: 4.比较直观的想法是: (1)枚举给定范围内的每一个进制: (2)计算在b进制下的回文数个数,然后即可得出在b进制下的和: (…