hdu6156 Palindrome Function 数位dp
来源:互联网 发布:数据存储管理软件 编辑:程序博客网 时间:2024/05/21 18:35
题目:求L~R所有的数的l~r进制的f(n,k), 如果n在k进制下是回文串那么f(n,k) = k, 否则等于1。
思路:数位dp
代码:
#pragma comment(linker, "/STACK:1024000000,1024000000")#include<iostream>#include<algorithm>#include<ctime>#include<cstdio>#include<cmath>#include<cstring>#include<string>#include<vector>#include<map>#include<set>#include<queue>#include<stack>#include<list>#include<numeric>using namespace std;#define LL long long#define ULL unsigned long long#define INF 0x3f3f3f3f3f3f3f3f#define mm(a,b) memset(a,b,sizeof(a))#define PP puts("*********************");template<class T> T f_abs(T a){ return a > 0 ? a : -a; }template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}// 0x3f3f3f3f3f3f3f3fLL dp[40][105][105][2];int dight[105],num[105];LL dfs(int base,int pos,int len,int sta,bool limit){ if(pos<0){ if(sta) return base; else return 1; } if(dp[base][pos][len][sta]!=-1&&!limit) return dp[base][pos][len][sta]; int up=limit?dight[pos]:(base-1); LL sum=0; for(int i=0;i<=up;i++){ num[pos]=i; if(i==0&&pos==len-1){ sum+=dfs(base,pos-1,len-1,sta,limit&&(i==up)); } else if(pos<len/2){ if(i==num[len-pos-1]) sum+=dfs(base,pos-1,len,sta,limit&&(i==up)); else sum+=dfs(base,pos-1,len,0,limit&&(i==up)); } else sum+=dfs(base,pos-1,len,sta,limit&&(i==up)); } if(!limit) dp[base][pos][len][sta]=sum; return sum;}LL solve(int n,int base){ if(n==0) return base; int len=0; do{ dight[len++]=n%base; n/=base; }while(n>0); return dfs(base,len-1,len,1,1);}int main(){ int T,cas=0,L,R,l,r; mm(dp,-1); scanf("%d",&T); while(T--){ scanf("%d%d%d%d",&L,&R,&l,&r); LL ans=0; for(int i=l;i<=r;i++) ans+=solve(R,i)-solve(L-1,i); printf("Case #%d: %lld\n",++cas,ans); } return 0;}
阅读全文
0 0
- HDU6156 Palindrome Function[数位DP]
- hdu6156 Palindrome Function数位dp
- hdu6156 Palindrome Function 数位dp
- 【HDU6156】Palindrome Function(数位DP+回文串)
- hdu6156 Palindrome Function (数位dp)
- hdu6156 Palindrome Function CCPC网赛1007 数位dp
- HDU6156-Palindrome Function
- HDU6156-Palindrome Function
- HDU6156 Palindrome Function
- hdu6156 数位dp
- hdu6156-(数位dp)
- HDU6156(数位dp)
- hdu6156 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)
- HYSBZ
- 数据库(2)---完整性
- JZOJ 5344. 【NOIP2017模拟9.3A组】摘果子
- 【初学者】HTML常用组件——轮播组件
- LeetCode(657)Judge Route Circle
- hdu6156 Palindrome Function 数位dp
- HDU
- 内部链接和外部链接
- DevExpress数据源SqlDataSource使用
- 最大的奇约数
- android视频播放
- 每天听本书
- 树形DP初步(2)
- 零基础学习GitHub桌面版-4 怎么给开源项目贡献代码?