时间限制:(每个case)2s      空间限制:128MB

小Q十分富有,拥有非常多的硬币,小Q拥有的硬币是有规律的,对于所有的非负整数K,小Q恰好各有两个面值为2^K的硬币,所以小Q拥有的硬币就是1,1,2,2,4,4,8,8,…。小Q有一天去商店购买东西需要支付n元钱,小Q想知道有多少种方案从他拥有的硬币中选取一些拼凑起来恰好是n元(如果两种方案某个面值的硬币选取的个数不一样就考虑为不一样的方案)。

输入:

输入包括一个整数n(1<=n<=10^18),表示小Q需要支付多少钱。注意n的范围。

输出:

输出一个整数,表示小Q可以拼凑出n元钱放的方案数。

【请注意:javascrip语言不支持调试,请同学们优先考虑使用其他语言,谢谢】

样例输入:6

样例输出:3


数位dp,将n表示成二进制,从为1的位置向后转移。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=200+10;
int dp[maxn];
int nxt[maxn],pos[maxn];
int inx,res;
int dfs(int x){if(x==-1)return 1;if(dp[x]!=0)return dp[x];dp[x]+=dfs(nxt[x]);for(int i=1;i<x;i++){if(pos[i]==1)continue;dp[x]+=dfs(nxt[i]);}return dp[x];
}
signed main(){int n;scanf("%lld",&n);res=-1;while(n){pos[++inx]=n%2;nxt[inx]=res;if(n&1)res=inx;n/=2;}printf("%lld\n",dfs(inx));return 0;
}

在别人博客中看见了更加简单的方法,用位运算+分治,将0看成是用了0次或者2次,1表示自己用了一次或者后面用了两次。

#include <bits/stdc++.h>
#define int long long
using namespace std;const int maxn=200+10;
int solve(int n){if(n==0)return 0;if(n==1)return 1;if(n==2)return 2;if(n&1){return solve(n>>1);}return solve(n>>1)+solve((n-2)>>1);
}
signed main(){int n;scanf("%lld",&n);printf("%lld\n",solve(n));return 0;
}

腾讯2018秋招正式笔试题目——拼凑硬币相关推荐

  1. 腾讯2018秋招笔试真题(2)

    腾讯2018秋招笔试真题 3.画家小Q [题目描述]画家小 Q 又开始他的艺术创作.小 Q 拿出了一块有 NxM 像素格的画板, 画板初始状态是空白 的,用'X'表示. 小 Q 有他独特的绘画技巧,每 ...

  2. 腾讯2018秋招笔试真题(1)

    腾讯2018秋招笔试真题 小Q的歌单 [题目描述]小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌 ...

  3. 腾讯2018秋招笔试真题——安排机器

    本文参考自腾讯2018秋招笔试真题--安排机器 查看原文: 原文地址 题目描述:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi.                 小Q拥有n ...

  4. 2019年中兴秋招在线笔试题目

    2019年中兴秋招在线笔试题目 只记得两个编程题: 第一个比较简单,原题是:一位老师获得两个分数列表,同时有两个班的人数.要求是将两个列表进行合并并排序. 第二个中等难度,彩票问题:给出一个彩票列表, ...

  5. 途牛网php笔试题,2018秋招途牛笔试试题分享,期待春招offer!

    去年秋招做的途牛的笔试题,分享给大家,求春招好运,获得一个满意的offer! 单选题 1.下面的代码执行后,i,j的值各是多少(  ) A i=6,j=5 B i=5,j=5 C i=6,j=5 D ...

  6. 腾讯2018秋招笔试真题-小Q的歌单

    小Q的歌单 [题目描述]小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单 ...

  7. 【面试真题】腾讯2018秋招前端正式试题(含答案)

    参考答案关注公众号,回复"腾讯答案"获取 01 不定向多选 1.    往下面的5阶B树中插入关键吗80后,该B树第二层的节点数为( ). A.   6 B.   7 C.   8 ...

  8. 搜狗2018秋招Java笔试试题

    一.选择题(20) 1.以下没有用栈来实现的应用场景是:A A 进程调度 B 函数调用 C 表达式求值 D 树的节点的深度优先遍历 2.不定项选择,如下算法的时间复杂度D A O(n^3) B O(n ...

  9. 阿里巴巴2018秋招正式试题及其答案

    阿里正式试题 1.      下面代码中,当点击 点我 时,输出的正确结果是:B <div id="div2"> <div id="div1" ...

最新文章

  1. 单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!
  2. docker-compose安装部署ELK
  3. Centos7 Git源码安装
  4. 怎样添加、移除、移动、复制、创建和查找节点?
  5. 标准库类型String,Vector
  6. RabbitMQ有5种工作模式
  7. inside uboot (五) DRAM的构成
  8. 千万级负载均衡架构设计
  9. 网页html语言怎么看,怎样查看网页的css代码?
  10. 基于spring+quartz的分布式定时任务框架
  11. Android 简介:Android SDK 和开发框架简介
  12. 天梯—跟奥巴马一起画方块(C语言)
  13. 我们的年代《音乐天堂》经典回顾
  14. Java多线程编程总结 链接
  15. HC-SR04 超声波原理图讲解与时序分析与arduino使用
  16. 【STM32技巧】HX711称重芯片详细说明
  17. WebStorm的下载与安装
  18. 在Godot中制作杀戮尖塔的箭头
  19. 为什么智能手机中被撕的永远是华为!
  20. ibm笔记本修复计算机开机按,联想thinkpad重装系统按什么键_联想thinkpad电脑重装系统按哪个键-win7之家...

热门文章

  1. 天翼云为欧拉社区贡献首个C++热补丁 加速推进联创技术落地应用
  2. linux管道通信原理
  3. Beyond Part Models: Person Retrieval with Refined Part Pooling (and A Strong Convolutional Baseline)
  4. html树形菜单折叠 css,JS+CSS简单树形菜单实现方法
  5. 百度竞价ocpc投放是一门玄学吗
  6. Excel中如何显示复杂公式中局部的计算结果,例如嵌套函数,使用多个函数
  7. docker swarm英文文档学习-7-在集群中管理节点
  8. 【数据库基础笔记】3、约束和隔离
  9. IDEA 类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX 应用程序类必须扩展javafx.application.Applicati
  10. 推荐8款免费企业邮箱,让你的工作便捷起来