hdoj Stern-Brocot Tree 4556 (欧拉函数打表)
来源:互联网 发布:图书馆借阅源码 php 编辑:程序博客网 时间:2024/04/28 12:43
Stern-Brocot Tree
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 539 Accepted Submission(s): 286
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
1246
Sample Output
351325#include<stdio.h>#include<string.h>#include<algorithm>#define N 1000010#define ll long longusing namespace std;ll a[N];ll b[N];ll eular(){int i,j;memset(a,0,sizeof(a));a[1]=1;for(i=2;i<N;i++){if(!a[i]){for(j=i;j<N;j+=i){if(!a[j])a[j]=j;a[j]=a[j]/i*(i-1);}}}ll ans=0;for(i=1;i<N;i++){ans+=a[i];b[i]=2*ans+1;}}int main(){int n;eular();while(scanf("%d",&n)!=EOF){printf("%I64d\n",b[n]);}return 0;}
0 0
- hdoj Stern-Brocot Tree 4556 (欧拉函数打表)
- hdoj 4556 Stern-Brocot Tree(欧拉函数)
- HDOJ 题目4556Stern-Brocot Tree(数学,欧拉函数)
- HDOJ 4556 Stern-Brocot Tree
- hdu4556 Stern-Brocot Tree(欧拉函数递推关系)
- HDU-4556-Stern-Brocot Tree
- hdu 4556 Stern-Brocot Tree
- hdu 4556 Stern-Brocot Tree
- HDU 4556 Stern-Brocot Tree
- hdu4556-Stern-Brocot Tree
- hdu4556-Stern-Brocot Tree
- hdu 4556 Stern-Brocot
- Farey序列(Stern-Brocot tree的衍生)
- Hdu 6209 The Intersection(Stern-Brocot tree+二分)
- hdu4556 西山居四 Stern-Brocot Tree
- PE 372 【类欧几里德】【Stern-Brocot Tree】
- [Codeforces 585C] Alice, Bob, Oranges and Apples (Stern-Brocot Tree + 更相减损法)
- hdoj 2824 The Euler function(欧拉函数打表)
- tomcat启用SSL443端口,证书错误问题
- Fragment基本应用(一)
- POJ1915 Knight Moves 经典BFS
- IOS吐槽狂人:添加实体文件夹
- iOS视图控制对象生命周期
- hdoj Stern-Brocot Tree 4556 (欧拉函数打表)
- setsockopt的用法
- 如何在Latex文档中直接画图?
- COCOS2D-3.9 ApplicationProtocol 分析
- IOS吐槽狂人:数组和字典的取值区别
- 【E】【59】【leetcode题解】Valid Sudoku
- 设备驱动的艺术之旅 - 无处不在的字符设备<二>
- 今天开发上遇到的问题记录
- Ceph块设备命令