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;
}
标签:1087,PAT,算式,int,Limit,Basic
From: https://www.cnblogs.com/tacticKing/p/17307644.html