PAT 乙级 1087 有多少不同的值
1. 题目简述及在线测试位置
1.1 给定数字N,从1到N依次代入到:i/2 + i/3 + i/5 ,统计可以得到多少不同的数字
1.2 在线测试位置: 1087 有多少不同的值
2. 基本思路
2.1 本题的难点是如何统计不同的数,我的思路是通过容器map进行确定:若是新数,计数加一;否则计数不变
map<int, int> Statistic;
if (!Statistic[ProcessData])
Statistic[ProcessData] = ++Count;
3. 完整AC代码
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<int, int> Statistic;
int N,Count=0,ProcessData; // N 计数 过程数
cin >> N;
for (int i = 1; i <= N; i++)
{
ProcessData = int(i / 2) + int(i / 3) + int(i / 5);
if (!Statistic[ProcessData])
Statistic[ProcessData] = ++Count;
}
cout << Count;
return 0;
}