PAT Basic Level 1087 有多少不同的值 解题思路及AC代码 v1.0

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;
}


上一篇:CF675E Trains and Statistic [dp,单调栈]


下一篇:oracle for 循环用法