zoukankan      html  css  js  c++  java
  • POJ2478 Farey Sequence

    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 15023   Accepted: 5962

    Description

    The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are 
    F2 = {1/2} 
    F3 = {1/3, 1/2, 2/3} 
    F4 = {1/4, 1/3, 1/2, 2/3, 3/4} 
    F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} 

    You task is to calculate the number of terms in the Farey sequence Fn.

    Input

    There are several test cases. Each test case has only one line, which contains a positive integer n (2 <= n <= 106). There are no blank lines between cases. A line with a single 0 terminates the input.

    Output

    For each test case, you should output one line, which contains N(n) ---- the number of terms in the Farey sequence Fn. 

    Sample Input

    2
    3
    4
    5
    0

    Sample Output

    1
    3
    5
    9

    Source

    POJ Contest,Author:Mathematica@ZSU

    简单分析一波就知道,读入n时输出1~n的欧拉函数和即可。

    飞快地敲了个暴力欧拉函数交上去,TLE。

    默默打了欧拉函数表,WA。

    然后把int换成long long,终于过了。

     1 /*by SilverN*/
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 long long f[1000002];
     9 int n;
    10 void phi(){
    11     int i,j;
    12     for(i=2;i<=1000000;i++)
    13         if(!f[i])
    14             for(j=i;j<=1000000;j+=i){
    15                 if(!f[j])f[j]=j;
    16                 f[j]=f[j]/i*(i-1);
    17             }
    18 }
    19 int main(){
    20     phi();
    21     for(int i=1;i<=1000000;i++){
    22         f[i]+=f[i-1];//求前缀和 
    23     }
    24     while(scanf("%d",&n) && n){
    25         cout<<f[n]<<endl;
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5774518.html
Copyright © 2011-2022 走看看