[2006年NOIP普及组] 明明的随机数
题目大意:在N个1到1000之间的随机整数中,对于其中重复的数字,只保留一个,把其余相同的数去掉,再把这些数从小到大排序。
这个题目我们其实可以开一个数组,如果一个数字出现了,就让对应的数组的位置标记下来,最后输出。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a,n,tot;//tot表示不重复的数字数
bool num[1001];//num[i]代表值为i的数是否出现过
int main()
{
memset(num,false,sizeof(num));
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a;
if (num[a]==false)//加上这个判断,是为了避开重复,在输入循环中直接计算tot的值,节省时间
{
num[a]=true;
tot++;
}
}
cout<<tot<<endl;
for (int i=1;i<=1000;i++)//循环整个num数组,如果num[i]=true,说明有i这个数,输出
{
if (num[i]==true)
{
cout<<i<<" ";
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现