数位DP hdu-2089
来源:互联网 发布:国王的恩赐知乎 编辑:程序博客网 时间:2024/04/27 11:24
和hdu3555是一样滴··· 就加个4
dp[i][0]=dp[i-1][0]*9-dp[i-1][1];// 不含62 4的
dp[i][1]=dp[i-1][0];//首位为2的 不含62 4的
dp[i][2]=10*dp[i-1][2]+dp[i-1][1]+dp[i-1][0];//不吉利的
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include <algorithm>#define max(x,y) ((x)>(y)?(x):(y))#define min(x,y) ((x)<(y)?(x):(y))#define ll long long#define eps 1e-8#define ms(x,y) (memset(x,y,sizeof(x)))#define fr(i,x,y) for(int i=x;i<=y;i++)using namespace std;int dp[10][3];void make(){ ms(dp,0); dp[0][0]=1; fr(i,1,6) { dp[i][0]=dp[i-1][0]*9-dp[i-1][1];// 不含62 4的 dp[i][1]=dp[i-1][0];//首位为2的 不含62 4的 dp[i][2]=10*dp[i-1][2]+dp[i-1][1]+dp[i-1][0];//不吉利的 }}int n,m;bool init(){ return cin>>n>>m,n||m;}int num(int k){ int len=0,a[10]; int sum=k; while(k) { a[++len]=k%10; k/=10; } a[len+1]=0; int s=0; bool flag=0; for(int i=len;i>0;i--) { s+=dp[i-1][2]*a[i]; if(flag)s+=dp[i-1][0]*a[i]; else { if(a[i]>4)s+=dp[i-1][0]; if(a[i]>6)s+=dp[i-1][1]; if(a[i+1]==6&&a[i]>2)s+=dp[i][1]; } if(a[i]==4||(a[i]==2&&a[i+1]==6))flag=1; } return sum-s;}void doit(){ int ans=0; ans=num(m+1)-num(n); cout<<ans<<endl;}int main(){ make(); while(init()) { doit(); } return 0; //fr(i,1,9)cout<<dp[i][0]<<endl;}
0 0
- HDU 2089 数位DP
- Hdu 2089 数位dp
- HDU 2089 数位DP
- 数位DP hdu-2089
- HDU 2089 数位DP
- HDU 2089【数位DP】
- 【数位DP】 HDU 2089
- 数位DP hdu 2089
- hdu 2089 数位DP
- hdu 2089 数位dp
- hdu 2089 数位dp
- hdu 2089 数位dp
- HDU 2089 数位DP
- HDU 2089 数位DP
- hdu 2089 数位DP
- HDU-2089-数位dp
- HDU 2089 数位DP
- hdu 2089 数位dp
- Apache ProxyPass 出现503 Service Temporarily Unavailable 的解决方案
- Ubuntu 13.10中安装eclipse后菜单栏下拉失效
- C#笔记之值类型和引用类型
- 作业
- 常见背景音(不定期更新)
- 数位DP hdu-2089
- 第4周作业-数学学习工具
- 第三章部分作业重新调试结果(第五周)
- 关于MeasureSpec的一些了解
- Apriori算法
- 【黑马程序员】C#笔记之值类型和引用类型
- shell 关联数组添加元素问题
- 【Android-UI】包含多个子View时触发父节点的焦点事件
- 【日志】2014_4_7 琐碎杂事,无具体技术