链接

[http://murphyc.fun/problem/4011]

题意

描述

众所周知,duxing哥非常喜欢原味鸡。众所周知,原味鸡是长在原味鸡树上的。

duxing哥因为是水产巨子,所以就购买了一棵原味鸡树。原味鸡树是一颗有n个节点的完全二叉树(节点编号从1开始),每个节点会长出一个原味鸡。每当duxing哥想吃原味鸡的时候,他就会在原味鸡树上挑选一个节点,然后将这个节点的子树上的原味鸡都吃掉(包括选中的那个节点)。

因为duxing哥害怕摘下的鸡不够他吃,所以现在duxing哥想知道当他选择某个节点的时候能吃到多少原味鸡。

输入

第一行n,m,其中n代表这颗树有多少个节点,m代表duxing哥的询问次数(1<=n<=1e9,1<=m<=100000)

接下来m行,每行一个数字x,代表duxing哥询问的节点编号

输出

对于duxing哥的每次询问,输出一个数字代表他能吃到多少原味鸡

输入样例 1

10 4

5

3

6

2

输出样例 1

2

3

1

6

分析

找规律

完全二叉树,k为节点的子树节点个数

从节点序号出发,每次*2,看代码应该懂了

代码

#include<iostream>
#include<stdio.h>
#include<map>
using namespace std;
int n,k;
using namespace std;
int main(){
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&k);
while(k--){
int q;
scanf("%d",&q);
int sum=0,k=1;
while(1){
sum+=k;
q*=2;
if(q>=n) break;
k*=2;
}
if(q==n)
cout<<sum+1<<endl; else if(q/2+k<n) cout<<sum<<endl;
else
{
sum+=n-q/2+1-k;
cout<<sum<<endl;
}
}
return 0;
}

最新文章

  1. Entity Framework Code First执行SQL语句、视图及存储过程
  2. 9.Struts2在Action中获取request-session-application对象
  3. C#预编译
  4. arcgis批量处理mxd定义服务中的路径
  5. virtualBox切换到无缝模式后,如何调出菜单
  6. linux下安装使用libuuid(uuid-generate)
  7. 【BZOJ】1606: [Usaco2008 Dec]Hay For Sale(背包)
  8. 自定义ShareDialog视图
  9. VS2008/MFC —常用控件使用总结 转载
  10. 从你的全世界切过(胡说八道支持向量机SVM小故事)
  11. zabbix上监控docker
  12. Bash 脚本进阶,经典用法及其案例
  13. vi编程技巧:
  14. error :expected initializer before
  15. 经验之谈:Swing的开发工作会非常的累,而且这项技术正在走向没落。避免从事有这种特征的工作。
  16. Learning-MySQL【6】:视图、触发器、存储过程、函数、流程控制
  17. python--第十三天总结(html ,css 语法)
  18. VBA续嘘嘘——宏技巧集绵
  19. MySQL之 Mysqldump导出数据库
  20. 在windows7中配置ant环境变量

热门文章

  1. C#方法重载(overload)方法重写(override)隐藏(new)
  2. Android内嵌PDF预览
  3. [Hive_add_7] Hive 实现最高气温统计
  4. Session变量在PHP中的使用
  5. java 开发注意事项
  6. background-image使用svg如何改变颜色
  7. Win10 开始运行不保存历史记录原因和解决方法
  8. 【汤鸿鑫 3D太极】5年目标规划(基本功、套路、实战搏击)
  9. c#基础知识之 Dataset 索引0没有值
  10. IO的详细解释:It&#39;s all about buffers: zero-copy, mmap and Java NIO