PAT Basic 1087. 有多少不同的值

PAT Basic 1087. 有多少不同的值

1. 题目描述:

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

2. 输入格式:

输入给出一个正整数 \(N\)\(2≤N≤10^4\))。

3. 输出格式:

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

4. 输入样例:

2017

5. 输出样例:

1480

6. 性能要求:

Code Size Limit
16 KB
Time Limit
150 ms
Memory Limit
64 MB

思路:

找出规律即可,以\(⌊n/2⌋\)为例,其取值为阶梯函数,2相当于步长,对于\(1\sim N\)间的自然数\(n\)来说,每次\(n\)可以被2整除时,\(⌊n/2⌋\)的值便会发生变化,所以题目实际上在统计\(2\sim N\)间可以被2、3或5整除的数的个数再+1(因为\(n=1\)时算式取一个值,后续每次可以整除时算式的值都会发生变化)。

My Code:

#include <stdio.h>

int main(void)
{
    int num=0;
    int count=0;
    int i=0; //iterator
    
    count = 1;
    scanf("%d", &num);
    for(i=2; i<=num; ++i)
    {
        if(!(i%2) || !(i%3) || !(i%5))
        {
            ++count;
        }
    }
    printf("%d\n", count);
    
    return 0;
}
posted @ 2023-04-11 20:43  十豆加日月  阅读(11)  评论(0编辑  收藏  举报