hdu2089 不要62 (数位DP)
来源:互联网 发布:尿白蛋白肌酐比值算法 编辑:程序博客网 时间:2024/05/18 01:17
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
#include <stdio.h> #include <string.h> int dp[10][3],digits[10];void Init(){int i;dp[0][0]=1;dp[0][1]=dp[0][2]=0;for(i=1;i<10;++i){dp[i][0]=9*dp[i-1][0]-dp[i-1][1];//在最高位加上除了4之外的9个数字,但是可能在2之前加了6dp[i][1]=dp[i-1][0];//最高位2dp[i][2]=10*dp[i-1][2]+dp[i-1][0]+dp[i-1][1];//在已经有不吉利数字最高位加任意数字,或者在无吉利数字前加4,或者在2前面加4}}int slove(int n){int i,len,temp,flag,ans;temp=n;len=0;while(temp){digits[++len]=temp%10;temp/=10;}digits[len+1]=0;ans=0;flag=0;for(i=len;i>=1;--i){ans+=dp[i-1][2]*digits[i];if(flag)//高位已经出现4或者62ans+=dp[i-1][0]*digits[i];if(!flag&&digits[i]>4)ans+=dp[i-1][0];if(!flag&&digits[i+1]==6&&digits[i]>2)//高位是6,后面一位可能出现2ans+=dp[i][1];if(!flag&&digits[i]>6)//高位可能出现6,要把后面最高位为2计入ans+=dp[i-1][1];if(digits[i]==4||(digits[i+1]==6&&digits[i]==2))flag=1;}return n-ans;}int main(){int n,m,num1,num2;Init();while(scanf("%d %d",&n,&m)&&((n+m)!=0)){num1=slove(m+1);num2=slove(n);printf("%d\n",num1-num2);}return 0;}
- 【数位DP】 hdu2089 不要62
- 【数位DP】不要62 HDU2089
- HDU2089:不要62(数位DP)
- hdu2089 不要62 数位dp
- hdu2089 不要62 (数位DP)
- HDU2089 不要62 数位DP
- Hdu2089 - 不要62 - 数位dp
- hdu2089 不要62 数位dp
- 【数位DP】【HDU2089】不要62
- [HDU2089] 不要62 && 数位DP
- hdu2089 不要62 数位dp
- HDU2089 不要62 (数位DP)
- HDU2089 不要62 数位DP
- HDU2089 不要62【数位DP】
- hdu2089不要62【数位dp】
- hdu2089 不要62 数位DP
- hdu2089 不要62(数位DP)
- hdu2089 不要62(数位dp)
- Git详解之四~九
- 多线程
- 2013-09-21
- 2014百度校招---西安--终端类笔试题
- 题目1367:二叉搜索树的后序遍历序列
- hdu2089 不要62 (数位DP)
- OpenCV之旅(2):pencvqt opencv显示一张图片 测试 总结
- 你找到你的智力类型了吗?
- 设计并实现同时支持多种视频格式的流媒体点播系统
- 句柄类
- HashMap的存取之美
- BloomFilter——大规模数据处理利器
- 多任务看门狗流程图
- Storm入门教程 第二章 构建Topology