hdu 6156 Palindrome Function
来源:互联网 发布:淘宝代理货源平台 编辑:程序博客网 时间:2024/06/05 13:35
题意
定义函数
题解
可以发现
比赛的时候竟然没做这一题。。。蠢死了 ┭┮﹏┭┮
代码
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int B=40;int dig[B],tmp[B];ll dp[B][B][B];int base;ll dfs(int pos,int start,bool limit){ if (pos<0) return 1; if (!limit&&dp[base][pos][start]!=-1) { return dp[base][pos][start]; } int last=limit?dig[pos]:base-1; ll res=0; for (int i=0;i<=last;i++) { tmp[pos]=i; if (pos==start&&i==0) { res+=dfs(pos-1,start-1,limit&&(i==last)); } else if (pos<(start+1)/2) { if (i==tmp[start-pos]) { res+=dfs(pos-1,start,limit&&(i==last)); } } else { res+=dfs(pos-1,start,limit&&(i==last)); } } if (!limit) dp[base][pos][start]=res; return res;}ll calc(int x){ int len=0; while (x) { dig[len++]=x%base; x/=base; } return dfs(len-1,len-1,1);}int main(){ memset(dp,-1,sizeof(dp)); int T,cas=0; scanf("%d",&T); while (T--) { int L,R,l,r; scanf("%d%d%d%d",&L,&R,&l,&r); ll ans=0; for (base=l;base<=r;base++) { ll cnt=calc(R)-calc(L-1); ans+=cnt*base+(R-L+1-cnt); } printf("Case #%d: %lld\n",++cas,ans); } return 0;}
阅读全文
0 0
- Hdu 6156 Palindrome Function
- HDU 6156 Palindrome Function
- hdu 6156 Palindrome Function
- hdu 6156 Palindrome Function
- HDU-6156 Palindrome Function
- hdu 6156 Palindrome Function 数位DP
- HDU 6156 Palindrome Function 经典数位DP
- HDU-6156 Palindrome Function(找规律)
- HDU 6156 Palindrome Function 数位DP
- Hdu 6156 Palindrome Function【数位Dp】
- HDU 6156 Palindrome Function(数位DP)
- HDU-6156 Palindrome Function(数位DP)
- HDU 6156(Palindrome Function-数位dp)
- HDU 6156 Palindrome Function (数位dp)
- HDU 6156 Palindrome Function【数位dp】
- hdu 6156 Palindrome Function(数位dp&&其他)
- hdu 6156 Palindrome Function(数位dp)
- hdu 6156 palindrome function #数位dp 3
- hdu6138 Fleet of the Eternal Throne AC自动机
- 计算机网络基础概要
- Python3之爬虫爬取豆瓣读书Top250
- js实现li排序
- 双色球组合
- hdu 6156 Palindrome Function
- ELF
- JUnit单元测试
- Linux系统网络属性和基本配置
- 浏览器F12小结
- Linux下的crontab定时执行任务命令详解
- 大富翁游戏 -- JAVA 算法学习
- 字符串---空格替换
- 最长上升子序列