Stern-Brocot Tree

                                                                            Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)

Problem Description

  
  上图是一棵Stern-Brocot树,其生成规则如下:
  从第1行到第n行,每行相邻两数a/b和c/d,产生中间数(a+c)/(b+d),置于下一行中。将一行的分数(包括0/1,1/0),进行约分简化,则每一行(包括0/1,1/0,1/1),不会出现两个相同的分数。若分子或者分母大于n,则去掉该分数,将剩下的分数,从小到大排序,得到数列F。
  现在请您编程计算第n行的数列F的个数。
Input
输入包含多组测试用例,每组输入数据是一个正整数n(n<=1000000)。
Output
对于每组的测试数据n,请输出第n行的数列F的个数。
Sample Input
1 2 4 6
Sample Output
3 5 13 25
仔细看图可以发现:对于每一行都可以看成是关于1/1对称的两部分,所以只需求出1/1左边的个数就可求出这一行的个数。而左边全部都是真分数,分母为x的真分数的个数就是x的欧拉函数值。n最大为1000000,所以可以递推打表。
#include<cstdio>
const int N = 1000001;
int e[N];
__int64 a[N], res = 0;
void euler()
{for(int i = 2; i < N; i++)e[i] = 0;e[1] = 1;for(int i = 2; i < N; i++)if(!e[i]){for(int j = i; j < N; j += i){if(!e[j])e[j] = j;e[j] = e[j] / i * (i-1);}}
}
int main()
{int i, n;euler();for(i = 1; i < N; i++){res += e[i];a[i] = res * 2 + 1;}while(~scanf("%d", &n))printf("%I64d\n", a[n]);return 0;
}

hdu 4556 Stern-Brocot Tree相关推荐

  1. HDU 4556 Stern-Brocot Tree

    题意:求SB树第N层分母分子小于均等于N的数有多少? 搞清楚了SB Tree的性质,这道题就很容易了.因为SB Tree中的数均为最简分数,所以筛一波欧拉函数即可. #include<bits/ ...

  2. HDU 5274 Dylans loves tree(树链剖分)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5274 [题目大意] 给出一棵树,每个点有一个权值,权值可修改,且大于等于0,询问链上出现次数为奇数 ...

  3. 【HDU - 4786 】Fibonacci Tree (最小生成树变形,上下界贪心,tricks)

    题干: Coach Pang is interested in Fibonacci numbers while Uncle Yang wants him to do some research on ...

  4. HDU 6241 Color a Tree

    Color a Tree 题目大意:一棵树,根为1.某些点有一些限制.限制A: 该$x_i$点子树染色点至少$y_i$个. 限制B: 该$x_i$点子树外染色至少$y_i$个.求最少染色点数. 首先是 ...

  5. HDU 4408 Minimum Spanning Tree 最小生成树计数

    http://acm.hdu.edu.cn/showproblem.php?pid=4408 题意:求最小生成树个数 题解:对于Kruskal算法,我们发现,最小生成树要想用多种方法就要有长度相同的边 ...

  6. hdu 4699 Editor(splay tree 伸展树)

    hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 解题思路:标乘是用了栈进行维 ...

  7. hdu 6962 I love tree 线段树维护二次函数

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点的一颗树,有mmm次询问,每次询问有两个操作: (1)(1)(1)将[a,b][a,b][a,b]路径上的点依次加上12,22,32,...,l ...

  8. hdu 2489 Minimal Ratio Tree

    https://vjudge.net/problem/HDU-2489 题意:求一个完全图的最优比率生成树,点的个数由题给出.最优比率生成树是边的权值之和与点的权值之和的比值最小的生成树. 思路:一开 ...

  9. hdu 2489 Minimal Ratio Tree (DFS枚举+MST)

    参考链接:http://blog.csdn.net/xingyeyongheng/article/details/9373271 http://www.cnblogs.com/chenxiwenruo ...

最新文章

  1. 2022-2028年中国工业大数据行业深度调研及投资前景预测报告
  2. 07.GitHub实战系列~7.Git之VS2013团队开发(如果不想了解git命令直接学这篇即可)...
  3. elasticsearch批量操作
  4. 分享Kali Linux 2016.2第50周虚拟机
  5. JavaScript箭头函数(Arrow Function)
  6. xxxx must either be declared abstract or implement abstract method ‘map(T)‘ in ‘MapFunction‘
  7. 系统背景描述_【计算机论文】管件加工管理系统和数据库的结构探析
  8. JS中对数组元素进行增、删、改、查的方法,以及其他方法
  9. Java-虚拟机-启动参数及调优
  10. 一种新的排序算法,基于优先队列
  11. 第一天学习笔记之数组(冒泡排序+二分查找)
  12. JAVA环境变量配置方法(Windows)
  13. 网络编程必读经典书籍
  14. 基于51单片机的CC2541蓝牙透传模块的无线通信
  15. 计算机数据结构考研知识点汇总,数据结构考研知识点总结.pdf
  16. dnf喇叭怎么设置不显示服务器,《DNF》屏蔽广告喇叭方法 广告喇叭怎么关掉
  17. 黑灰产套现城市消费券大揭秘
  18. 把txt 转换成CHM的目录或Index
  19. 智齿客服H5聊天链接接入及WebView不支持input file文件上传解决
  20. Docker 启动Redis

热门文章

  1. 撩课-Web大前端每天5道面试题-Day39
  2. hive job oom
  3. frp 0.11.0 发布新版,支持很多新功能
  4. 使用OSOT来优化虚拟桌面2
  5. Sleep()和wait()方法的区别
  6. 微信现金红包接口实现红包发放
  7. 【Socket】linux套接字技术之tcp
  8. 怎么一步步编写简单的PHP的Framework(五)
  9. Android操作系统2.0制作备份
  10. how to write academic english well?