题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555

简单的数位DP入门题目

思路和hdu2089基本一样

直接贴代码了,代码里有详细的注释

代码:

 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
long long int dp[][];
void init()
{
dp[][]=;dp[][]=;dp[][]=;
for(int i=;i<;i++)
{
dp[i][]=dp[i-][]*-dp[i-][];//dp[i][0]表示长度为i的不含49的数的个数
dp[i][]=dp[i-][];//dp[i][1]表示长度为i的不含49且最高位为9的数的个数
dp[i][]=dp[i-][]*+dp[i-][];// dp[i][2]表示长度为i的含49 的数的个数
}
}
int bit[];
long long int solve(long long int n)
{
int len=;
while(n)
{
bit[len++]=n%;
n/=;
}
bit[len]=;
long long int ans=;
bool flag=;
for(int i=len;i>=;i--)
{
ans+=dp[i-][]*bit[i];
if(flag) ans+=dp[i-][]*bit[i];//如果高位已经出现49那么后面随意
if(flag== && bit[i]>) ans+=dp[i-][];
if(bit[i+]== && bit[i]== ) flag=; }
if(flag ) ans++;
return ans;
}
int main()
{
int t;
long long int n;
scanf("%d",&t);
init();
while(t--)
{
scanf("%I64d",&n); cout<<solve(n)<<endl;
}
return ;
}

最新文章

  1. 部署JProfiler监控tomcat
  2. smtplib.SMTPAuthenticationError: (535, b&#39;Error: authentication failed&#39;)解决办法
  3. Spring Application Event Example
  4. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
  5. Android通过URL加载网络图片
  6. kindle paperwhite 使用说明
  7. C#操作Excel文件(转)
  8. IIS 7 支持10万并发请求
  9. Chapter 8 工厂方法模式
  10. HDU 1248 寒冰王座
  11. postgresql 在linux上的源码安装
  12. 微信小程序实例教程(四)
  13. Ubuntu16.04修改内核启动
  14. 在本地搭建play-with-docker
  15. ●UVA 10674 Tangents
  16. asp调用短信接口实现用户注册
  17. jquery倒计时按钮常用于验证码倒计时
  18. 利用setTimeout延时器 制作广告自动关闭
  19. BZOJ2618 [Cqoi2006]凸多边形 凸包 计算几何
  20. 【bzoj 1076】【SCOI2008】奖励关

热门文章

  1. vmware克隆之后网卡起不来的问题
  2. 转载linux c语言程序的Makefile编写
  3. 重温Javascript(一)
  4. String 类的实现(2)深度拷贝详解
  5. 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态
  6. Android中那些有你不知道的事
  7. 1.Maven的安装及配置
  8. 【Scala】Scala之Packaging and Imports
  9. Azure IoT 技术研究系列2-起步示例之设备注册到Azure IoT Hub
  10. 解决Json传输中文乱码问题