0%

1087 有多少不同的值 (20分)

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

输入格式

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

输出格式

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

输入样例

1
2017

输出样例

1
1480

分析

正常情况下,随着$n$增加1,算式会增加1或者0;当$n$是6/10/15的整数倍的时候,算式会增加2(缺失1个数字);当$n$是30的整数倍的时候,算式会增加3(缺失2个数字)。

因此要计算不同值的个数,只需要计算最后一个数字代入的结果+1(+1是因为有0的存在),再减去缺失的数字个数即可(30的整数倍不减反加是因为30是6,10,15的最小公倍数,已经被减了3次,因此需要加1次来弥补)。

$ans = \frac{N}{2}+\frac{N}{3}+\frac{N}{5}+1-\frac{N}{6}-\frac{N}{10}-\frac{N}{15}+\frac{N}{30}$

AC代码

1
#include <iostream>
2
using namespace std;
3
int main()
4
{
5
    int n;
6
    scanf("%d",&n);
7
    printf("%d",n/2+n/3+n/5+1-n/6-n/10-n/15+n/30);
8
    return 0;
9
}

原题地址

1087 有多少不同的值 (20分)

如果您觉得这篇分享不错,可以打赏作者一包辣条哦~