美文网首页
PAT Basic 1087. 有多少不同的值 (C语言实现)

PAT Basic 1087. 有多少不同的值 (C语言实现)

作者: OliverLew | 来源:发表于2019-02-08 10:43 被阅读10次

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。此处文章目前已更新至与Github Pages同步。欢迎star我的repo

    题目

    当自然数 n 依次取 1、2、3、……、 N 时,算式 \lfloor n/2\rfloor +\lfloor n/3\rfloor +\lfloor n/5\rfloor 有多少个不同的值?(注: \lfloor x\rfloor 为取整函数,表示不超过 x 的最大自然数,即
    x 的整数部分。)

    输入格式:

    输入给出一个正整数 N2 \le N \le 10^4 )。

    输出格式:

    在一行中输出题面中算式取到的不同值的个数。

    输入样例:

    2017
    

    输出样例:

    1480
    

    思路

    大致思路:

    题目的向下取整,和C语言中的整数除法是相同的,所以用C语言的话,直接除就好了。

    当n增大时,所求的算式也是非递减的,所以技巧就是,当算式的值比之前增大时,计数增加即可。

    实现很简单。

    代码

    最新代码@github,欢迎交流

    #include <stdio.h>
    
    int main()
    {
        int N, n, m, m0 = -1, count = 0;
    
        scanf("%d", &N);
    
        for(n = 1; n <= N; n++)
        {
            m = n / 2 + n / 3 + n / 5;
            if(m > m0)
                count++;
            m0 = m;
        }
    
        printf("%d", count);
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:PAT Basic 1087. 有多少不同的值 (C语言实现)

          本文链接:https://www.haomeiwen.com/subject/vwbnsqtx.html