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

该篇博客讲解了如何解决PAT乙级1087题目,利用map数据结构统计1到N整数中,经过i/2+i/3+i/5运算后的不同数值。核心思路是通过映射存储已出现的组合,避免重复。给出的C++代码实现了这一解决方案。
摘要由CSDN通过智能技术生成

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值