普通的数位DP计算回文串个数

/*
HDU 6156 - Palindrome Function [ 数位DP ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛
2-36进制下回文串个数
*/
#include <bits/stdc++.h>
using namespace std;
#define LL long long
int t, L, R, l, r, base;
int dig[40], tmp[40];
LL dp[40][40][40][2];
LL DFS(int pos, int start, bool state, bool limit)
{
if (pos < 0) return state;
if (!limit && dp[base][pos][start][state] != -1) return dp[base][pos][start][state];
int end = (limit ? dig[pos] : base-1);
LL res = 0;
for (int i = 0; i <= end; i++)
{
tmp[pos] = i;
if (pos == start && i == 0)
{
res += DFS(pos-1, start-1, state, limit && (i == end));
}
else if (state && pos < (start+1)/2)
{
res += DFS(pos-1, start, tmp[start-pos] == i, limit && (i == end));
}
else
{
res += DFS(pos-1, start, state, limit&&(i == end));
}
}
if (!limit) dp[base][pos][start][state] = res;
return res;
}
LL Cal(LL x)
{
int len = 0;
while (x)
{
dig[len++] = x % base;
x /= base;
}
return DFS(len-1, len-1, 1, 1);
}
LL solve()
{
LL num = (Cal(R) - Cal(L-1));
return num*base + (R-L+1-num);
}
int main()
{
memset(dp, -1, sizeof(dp));
scanf("%d", &t);
for (int tt = 1; tt <= t; tt++)
{
scanf("%d%d%d%d", &L, &R, &l, &r);
LL ans = 0;
for (int i = l; i <= r; i++)
{
base = i;
ans += solve();
}
printf("Case #%d: %lld\n", tt, ans);
}
}

  

最新文章

  1. IOS 多线程05-OperationQueue 、GCD详解
  2. FC 坦克大战 老巢铁墙
  3. 基于淘宝开源Tair分布式KV存储引擎的整合部署
  4. 关于@see注解
  5. IOS 学习笔记 2015-04-03 OC-API-文件读写
  6. PHP重构之函数上移
  7. Linux 安装字体
  8. 【Tips】Endnote导入IEEE Xplore文献方法《转载》
  9. IE11中的F12无效的问题
  10. python 3编写贴吧图片下载软件(超简单)
  11. Windows 下Redis的部署 及key 过期事件
  12. LAMP环境快速搭建
  13. go官方的http.request + context样例
  14. python MD5加密方法
  15. java 代码块,静态代码块,构造器等的执行顺序
  16. 利用js添加class
  17. standard cell timing model
  18. java资料——链表(转)
  19. Invalid property &#39;driverClassName&#39; of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]
  20. Vim技能修炼教程(8) - 多窗口

热门文章

  1. Java 语言 ArrayList 和 JSONArray 相互转换
  2. 第4章:LeetCode--链表
  3. linux运维工程师常用命令
  4. pause的作用
  5. React-intl相关使用介绍
  6. RMAN执行crosscheck archive报错ORA-19633问题处理
  7. 怎样解决多层this指向全局对象window的问题
  8. 基因组所三代单分子测序PacBio完成技术升级—超长读长助力基因组学研究
  9. 关于困惑已久的var self=this的解释
  10. VBA变量(七)