HDU 3555 Bomb 基础数位dp
来源:互联网 发布:淘宝中差评外包 编辑:程序博客网 时间:2024/04/28 23:10
题意大致就是说给你一个数n,要你求0~n之间含有49的数的个数
理解题意很简单下面就直接贴代码了
#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;__int64 dp[21][4];int a[1000];void init(){ memset(dp,0,sizeof(dp)); dp[0][0]=1; for(int i=1;i<=20;i++) { dp[i][0]=dp[i-1][0]*10-dp[i-1][1]; //不含49的个数 dp[i][1]=dp[i-1][0]; //不含49但是最高位为9 dp[i][2]=dp[i-1][1]+dp[i-1][2]*10; //含有49的个数 }}int main(){ int n,len; init(); scanf("%d",&n); while(n--) { len=0; __int64 m,ans=0,flag=0; scanf("%I64d",&m); m++; memset(a,0,sizeof(a)); while(m) { a[++len]=m%10; m/=10; } int g=0; for(int i=len;i>=1;i--) { ans+=a[i]*dp[i-1][2]; //对于每位先加上含有49的 if(flag) { ans+=a[i]*dp[i-1][0]; //如果之前就已经构成了49,那么加上不能构成49的 } if(!flag && a[i]>4) //加上最高位为9的,添加一个4进去 ans+=dp[i-1][1]; if(g==4 && a[i]==9) flag=1; g=a[i]; } printf("%I64d\n",ans); } return 0;}
- HDU 3555 Bomb 基础数位dp
- HDU 3555 Bomb(基础数位dp)
- HDU 3555 Bomb (数位DP)
- hdu 3555 - Bomb [数位dp]
- hdu 3555 Bomb【数位DP】
- HDU 3555 Bomb (数位DP)
- hdu 3555 Bomb 数位DP
- HDU 3555 Bomb (数位DP)
- hdu 3555 Bomb 数位dp
- [HDU 3555]Bomb[数位DP]
- HDU 3555 Bomb 数位DP
- hdu 3555 Bomb 数位dp
- HDU --3555--Bomb--数位DP
- hdu 3555 Bomb (数位DP)
- 【数位DP】【HDU 3555】Bomb
- hdu 3555 Bomb(数位DP)
- HDU 3555 Bomb(数位dp)
- 数位dp HDU 3555 Bomb
- 关于typedef的用法总结
- 黑马程序员-自学笔记-字符串的使用
- TOMCAT虚拟主机及为虚拟主机配置应用 HTTP协议
- cocos2d-x 渲染机制深入解析(三)
- 利用node-inspector来调试node
- HDU 3555 Bomb 基础数位dp
- 不明觉厉的spring(2)---spring核心容器及ioc
- 防火墙工作模式简介
- 追求心仪女孩fenby
- atomic/nonatomic/retain/assign/copy
- 黑马程序员-自学笔记-集合相关(重难点)
- [Google] 判断圆和矩形是否相交
- 笨湛粱道卮颂虾内伪鞠
- Android中TabHost的应用