HDU 3652 数位DP
来源:互联网 发布:java支付平台开发demo 编辑:程序博客网 时间:2024/05/30 23:10
点击打开链接
题意:问1到n中的数是13的倍数且数字中包含13
思路:只需要加一个变量代表取余的结果,然后dp数组也需要记录这个取余的结果
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const ll INF=0x3f3f3f3f3f3f3f3fll;const int maxn=5010;int dig[20];ll dp[20][10][2][15];ll dfs(int pos,int pre,int flag,int lim,int mod){ if(pos<0){ if(flag&&mod==0) return 1; else return 0; } if(!lim&&dp[pos][pre][flag][mod]!=-1) return dp[pos][pre][flag][mod]; int las=lim?dig[pos]:9; ll ret=0; for(int i=0;i<=las;i++) ret+=dfs(pos-1,i,flag||(pre==1&&i==3),lim&&(i==las),(mod*10+i)%13); if(!lim) dp[pos][pre][flag][mod]=ret; return ret;}ll slove(ll n){ int len=0; while(n){ dig[len++]=n%10; n/=10; } return dfs(len-1,0,0,1,0);}int main(){ memset(dp,-1,sizeof(dp)); ll n; while(scanf("%I64d",&n)!=-1){ printf("%I64d\n",slove(n)); } return 0;}
0 0
- HDU 3652 数位DP
- hdu 3652 数位DP
- hdu 3652 -数位dp
- 【数位DP】 【HDU 3652】
- hdu 3652 数位dp
- 数位DP HDU-3652
- HDU 3652 数位DP
- HDU 3652 数位DP
- hdu 3652(数位dp)
- HDU 3652 数位DP
- hdu 3652数位dp
- hdu 3652 数位dp
- HDU 3652 数位DP
- HDU 3652 数位DP
- HDU 3652 数位DP
- hdu 3652 数位dp
- HDU-3652-数位dp
- HDU 3652 数位DP
- 算法学习(四)----快速排序
- glDrawArrays 和 glDrawElements (可以解决帧率过小的问题)
- JDK的安装,我的java学习历程
- Qt学习之路(3):Hello, world!(源码解析)
- js实现常见的排序算法
- HDU 3652 数位DP
- java.lang.UnsupportedClassVersionError - JDK 版本错误
- 一天一篇批处理之——Part5: 跟变量/参数有关的高频命令set,shift,for
- Android自定义可复用View——topbar
- C++:01 网络通讯之socket
- LeetCode-Remove Duplicates from Sorted List II
- C语言变量声明的作用
- iOS系统架构
- ES6核心内容之语法