BestCoder Round #61 (div.2) C.Subtrees dfs
2015-11-04 22:44
155 查看
Subtrees
问题描述一棵有N个节点的完全二叉树,问有多少种子树所包含的节点数量不同。
输入描述
输入有多组数据,不超过1000组. 每组数据输入一行包含一个整数N.(1\leq N\leq {10}^{18})(1≤N≤1018)
输出描述
对于每组数据输出一行,表示不同节点数的子树有多少种.
输入样例
5 6 7 8
输出样例
3 4 3 5 题解: 完全二叉树,。。。dfs下去分点就好了
///1085422276 #include<bits/stdc++.h> using namespace std ; typedef long long ll; #define mem(a) memset(a,0,sizeof(a)) inline ll read() { ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } //**************************************** #define maxn 100000+5 #define mod 1000000007 ll n; set<ll > s; void dfs(ll x){ if(x==0)return ; if(s.count(x)){ return ; } s.insert(x); x--; dfs(x/2); dfs(x/2+x%2); } int main(){ while(scanf("%I64d",&n)!=EOF){ s.clear(); dfs(n); cout<<s.size()<<endl; } return 0; }代码
相关文章推荐
- 京东举报阿里巴巴扰乱电商市场
- 京东举报阿里巴巴扰乱电商市场
- Linux内核工程导论——进程社会学
- linux C++ 面向对象线程类封装
- USB core(三) - hub.c
- 3Sum Closest 解答
- 课后作业
- Java实现通过递归遍历树形结构
- LightOJ - 1380 Teleport(最小树形图)
- 关于学习MMU的一点感想
- 关于学习MMU的一点感想
- 关于学习MMU的一点感想
- poj 1305
- JavaScript中的this
- diy高手在民间
- 安卓客户端和php服务端传输包含中文文件名的文件
- OC三大特性之一:封装的介绍
- 项目注释模板
- <HTML5秘籍>——第6章(美妙的CSS3字体和特效)
- 银行家算法