博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hiho一下 第168周
阅读量:5321 次
发布时间:2019-06-14

本文共 829 字,大约阅读时间需要 2 分钟。

题目1 : 扩展二进制数

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

我们都知道二进制数的每一位可以是0或1。有一天小Hi突发奇想:如果允许使用数字2会发生什么事情?小Hi称其为扩展二进制数,例如(21)ii = 2 * 2^1 + 1 = 5, (112)ii = 1 * 2^2 + 1 * 2^1 + 2 = 8。

很快小Hi意识到在扩展二进制中,每个数的表示方法不是唯一的。例如8还可以有(1000)ii, (200)ii, (120)ii 三种表示方法。

对于一个给定的十进制数 N ,小Hi希望知道它的扩展二进制表示有几种方法?

输入

一个十进制整数 N。(0 ≤ N ≤ 1000000000)

输出

N的扩展二进制表示数目。

样例输入
8
样例输出
4

依次确定每一个二进位是0、1还是2,分别计算3种情况下表示方法的数目。

我们可以从低位向高位推,如果当前位是奇数,那个就只能填充1,如果是偶数,则可以填充0和2两种。

//Asimple#include 
using namespace std;int n;int func(int n) { if( n==0 || n== 1) return 1; if( n == 2 ) return 2; if( n%2 ) return func(n/2); else return func(n/2)+func((n-2)/2);}void input() { while( cin >> n ) { int ans = func(n); cout << ans << endl; }}int main() { input(); return 0;}

 

转载于:https://www.cnblogs.com/Asimple/p/7574775.html

你可能感兴趣的文章
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
关于 linux 的 limit 的设置
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>
vim中文帮助教程
查看>>
MySQL基础3
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>