• (Problem 73)Counting fractions in a range


    Consider the fraction, n/d, where n and d are positive integers. If n<d and HCF(n,d)=1, it is called a reduced proper fraction.

    If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get:

    1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8

    It can be seen that there are 3 fractions between 1/3 and 1/2.

    How many fractions lie between 1/3 and 1/2 in the sorted set of reduced proper fractions for d ≤ 12,000?

    题目大意:

    考虑分数 n/d, 其中n 和 d 是正整数。如果 n<d 并且最大公约数 HCF(n,d)=1, 它被称作一个最简真分数。

    如果我们将d ≤ 8的最简真分数按照大小的升序列出来,我们得到:

    1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8

    可以看出1/3和1/2之间共有3个分数。

    在d ≤ 12,000的升序真分数列表中,1/3和1/2之间有多少个分数?

    //(Problem 73)Counting fractions in a range
    // Completed on Wed, 19 Feb 2014, 16:34
    // Language: C11
    //
    // 版权所有(C)acutus   (mail: acutus@126.com) 
    // 博客地址:http://www.cnblogs.com/acutus/
    
    #include<stdio.h>
    #define N 12000
    
    int gcd(int a, int b)  //求最大公约数函数
    {
        int r;
        while(b) {
            r = a % b;
            a = b;
            b = r;
        }
        return a;
    }
     
    void solve()
    {
        int a, b, i, j, ans;
        ans = 0;
        for(i = 5; i <= N; i++) {
            a = i / 3;  b = i / 2;
            for(j = a + 1; j < b + 1; j++) {
                if(gcd(i, j) == 1)
                    ans++;
            }
        }
        printf("%d
    ", ans);
    }
     
    int main()
    {
        solve();
        return 0;
    }
    Answer:
    7295372
  • 相关阅读:
    分布式服务框架的雪崩问题
    分布式系统中的幂等性
    Exception引起的性能问题
    TFS2017新特性(一)
    云平台架构变迁
    MQ基本概念
    SVN版本管理
    1年内4次架构调整,谈Nice的服务端架构变迁之路
    鏖战双十一-阿里直播平台面临的技术挑战
    统一日志平台初探
  • 原文地址:https://www.cnblogs.com/acutus/p/3556853.html
Copyright © 2020-2023  润新知