加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

HDU 4556 Stern-Brocot Tree

发布时间:2020-12-13 21:13:36 所属栏目:PHP教程 来源:网络整理
导读:题目:点击打开链接 Description 上图是1棵Stern-Brocot树,其生成规则以下: 从第1行到第n行,每行相邻两数a/b和c/d,产生中间数(ac)/(bd),置于下1行中。将1行的分数(包括0/1,1/0),进行约分简化,则每行(包括0/1,1/0,1/1),不会出现两个相同的分数。

题目:点击打开链接

Description

  


   
  上图是1棵Stern-Brocot树,其生成规则以下: 
  从第1行到第n行,每行相邻两数a/b和c/d,产生中间数(a+c)/(b+d),置于下1行中。将1行的分数(包括0/1,1/0),进行约分简化,则每行(包括0/1,1/0,1/1),不会出现两个相同的分数。若份子或分母大于n,则去掉该分数,将剩下的分数,从小到大排序,得到数列F。 
  现在请您编程计算第n行的数列F的个数。 

Input

  输入包括多组测试用例,每组输入数据是1个正整数n(n<=1000000)。

Output

  对每组的测试数据n,请输出第n行的数列F的个数。

Sample Input

1 2 4 6

Sample Output

3 5 13 25

这个题目就是想说明,SB树和Farey序列的关系。

代码就几近不用再写了,直接把我的博客略改便可。

代码:

#include<iostream> <stdio.h> using namespace std; long long phi[1000001]; void get_phi() { for (int i = 1; i <= 1000000; i++)phi[i] = i; 2++) if (phi== i)int j ; j += i)phi[j= phi/ i*(i - ); phi+= phi[i ]; } } int main{ get_phi(); int nwhile (scanf("%d",&n)!=-)printf"%llun"[n]*+ ); return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读