当自然数 n n n 依次取 1、2、3、……、 N N N 时,算式 ⌊ n / 2 ⌋ + ⌊ n / 3 ⌋ + ⌊ n / 5 ⌋ ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注: ⌊ x ⌋ ⌊x⌋ ⌊x⌋ 为取整函数,表示不超过 x x x 的最大自然数,即 x x x 的整数部分。)
输入格式:
输入给出一个正整数 N N N( 2 ≤ N ≤ 1 0 4 2≤N≤10^4 2≤N≤104)。
输出格式:
在一行中输出题面中算式取到的不同值的个数。
输入样例:
2017
输出样例:
1480
解题思路:
i n t ( ) int() int() 强制转换函数实现 ⌊ x ⌋ ⌊x⌋ ⌊x⌋ 取整函数 , s u m sum sum 保存 ⌊ n / 2 ⌋ + ⌊ n / 3 ⌋ + ⌊ n / 5 ⌋ ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 计算结果,字典项 a n s [ s u m ] ans[sum] ans[sum] 不存在则保存当前 s u m sum sum 值。
答案代码:
#include <iostream>
#include <map>
using namespace std;
int main() {
int n;
cin >> n;
map<int,bool> ans;
for (int i = 1; i <= n; i++) {
double tmp = i;
int sum = int(tmp/2) + int(tmp/3) + int(tmp/5);
if (!ans[sum]) ans[sum] = true;
}
cout << ans.size() << endl;
return 0;
}