#include<stdio.h>
#include<string.h>
#define max 25 typedef __int64 LL;
LL dp[max][];
//dp[i][0] 不含49
//dp[i][1] 不含49但最高位为9
//dp[i][2] 含49 void init(){
memset(dp,,sizeof(dp));
dp[][]=;
for(int i=;i<max;i++){
dp[i][]=dp[i-][]*-dp[i-][];
dp[i][]=dp[i-][];
dp[i][]=dp[i-][]*+dp[i-][];
}
} LL solve(LL n){
int bit[max],len=;
while(n){
bit[++len]=n%;
n/=;
}
bit[len+]=;
LL ans=;
bool flag=false;
for(int i=len;i;i--){
ans+=bit[i]*dp[i-][];
if(flag){
ans+=bit[i]*dp[i-][];
}
else{
if(bit[i]>){
ans+=dp[i-][];
}
if(bit[i+]==&&bit[i]==){
flag=true;
}
}
}
if(flag){
ans++;
}
return ans;
} int main(){
init();
int T;
scanf("%d",&T);
while(T--){
LL n;
scanf("%I64d",&n);
printf("%I64d\n",solve(n));
}
} #include<stdio.h>
#include<string.h>
#define max 25 typedef long long LL;
LL dp[max][];
int bit[max],len; LL dfs(int pos,int have,int doing){
if(pos==){
return have==;
}
if(!doing && dp[pos][have]!=-){
return dp[pos][have];
} LL ans=;
int end=doing?bit[pos]:;
for(int i=;i<=end;i++){
int nhave=have;
if(have==&&i!=){
nhave=;
}
if(have==&&i==){
nhave=;
}
if(have==&&i==){
nhave=;
}
ans+=dfs(pos-,nhave,doing&&i==end);
}
if(!doing){
dp[pos][have]=ans;
}
return ans;
} LL solve(LL n){
len=;
while(n){
bit[++len]=n%;
n/=;
}
return dfs(len,,true);
} int main(){
memset(dp,-,sizeof(dp));
int t;
scanf("%d",&t);
while(t--){
LL n;
scanf("%lld",&n);
printf("%lld\n",solve(n));
}
}

HDU 3555 (递推&&记忆化)的更多相关文章

  1. [SCOI2008]着色方案 递推 记忆化搜索

    我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ ...

  2. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  3. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  4. "红色病毒"问题 HDU 2065 递推+找循环节

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2065 递推类题目, 可以考虑用数学方法来做, 但是明显也可以有递推思维来理解. 递推的话基本就是状态 ...

  5. Children’s Queue HDU 1297 递推+大数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题 ...

  6. [HDU 1428]--漫步校园(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1428 漫步校园 Time Limit: 2000/1000 MS (Java/Others)    M ...

  7. hdu 2044-2050 递推专题

    总结一下做递推题的经验,一般都开成long long (别看项数少,随便就超了) 一般从第 i 项开始推其与前面项的关系(动态规划也是这样),而不是从第i 项推其与后面的项的关系. hdu2044:h ...

  8. hdu 4597 Play Game(记忆化搜索)

    题目链接:hdu 4597 Play Game 题目大意:给出两堆牌,仅仅能从最上和最下取,然后两个人轮流取,都依照自己最优的策略.问说第一个人对多的分值. 解题思路:记忆化搜索,状态出来就很水,dp ...

  9. hdu 1142 最短路+记忆化

    最短路+记忆化搜索HDU 1142 A Walk Through the Forest链接:http://acm.hdu.edu.cn/showproblem.php?pid=1142 > 题意 ...

随机推荐

  1. 群晖引导是uefi还是传统模式的识别

     看左下角光标闪不闪,不闪的是uefi,在闪的就是传统

  2. Struts2入门问题

    一 使用Struts 2 开发程序的基本步骤 加载Struts2 类库 配置web.xml文件 开发视图层页面 开发控制层Action 配置struts.xml文件 部署.运行项目 第一步先导架包:在 ...

  3. css3 做border = 0.5px的细线

    参考: https://blog.csdn.net/Tyro_java/article/details/52013531

  4. mysql批量增加表中新列存储过程

    一般访问量比较大的网站,请求日志表都是每天一张表独立创建. 业务需要为每张表都添加一个新列,纠结了半天,写了个存储过程如下: 日志表结构类型 tbl_ads_req_20140801, tbl_ads ...

  5. Python开发之MySQL安装

    MySQL下载安装后再安装破解版本的Navicat图形化数据库工具即可.   安装python后.再进行如下操作(也可以安装好虚拟环境virtualenv 或者增强工具pip install virt ...

  6. 英语-汉语600句-会见:Making an Appointment/约会

    ylbtech-英语-汉语600句-会见:Making an Appointment/约会 1.返回顶部 1. Making an Appointment/约会1.喂,请问是哪位?Hello, who ...

  7. 转:Linux 2.4.x内核软中断机制

    源地址:http://www.ibm.com/developerworks/cn/linux/kernel/interrupt/ Linux 2.4.x内核软中断机制 杨沙洲 (pubb@163.ne ...

  8. 【DM642学习笔记三】flash的烧写

    ICETEK-DM642-PCI板上的29L008B芯片提供了8M位的Flash空间(访问地址空间是CE1,90000000h~90080000h).主要用于自启动功能和存储FPGA的配置数据. 一. ...

  9. git pull拉取远程指定分支

    1.若git clone之后想拉取某个指定分支:先git pull ,然后git checkout 指定分支名称 2.若git clone之后想拉取某个指定分支:先git fetch origin 分 ...

  10. 如何在 Flink 1.9 中使用 Hive?

    Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表.本文将主要从项目的设计架构.最新进展 ...