(HDU)1029 --Ignatius和公主IV(Ignatius和公主IV)

本文介绍了一个寻找特殊整数的问题及解决方案。特殊整数在给定的整数序列中出现次数超过(N+1)/2次。文章提供了一段C++代码实现,通过计数每个整数的出现次数来找出符合条件的特殊整数。

问题描述
“好吧,你不是很坏,但是你永远不能通过下一个测试。 feng5166说。

“我会告诉你一个奇数N,然后是N个整数,其中有一个特殊的整数,你必须告诉我在告诉你所有的整数后,哪个整数是特殊的整数。 feng5166说。

“但是特殊整数的特征是什么? Ignatius问。

“整数会出现至少(N + 1)/ 2次,如果你找不到正确的整数,我会杀死公主,你也会是我的晚餐,哈哈哈哈 .....”feng5166说。

你能找到Ignatius的特殊整数吗?


输入
输入包含几个测试用例。每个测试用例包含两行。第一行由奇整数N(1 <= N <= 999999)组成,表示feng5166将告诉我们的英雄的整数个数。

第二行包含N个整数。输入由文件结尾终止。


输出
对于每个测试用例,您只需输出一行,其中包含您找到的特殊数字。


样品输入
5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5
7
1 1 1 1 1 1 1


示例输出
3
5
1

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int a[500000],n,i,temp,ans;
10     while(~scanf("%d",&n))
11     {
12         memset(a,0,sizeof(a));
13         for(i=1;i<=n;i++)
14         {
15             scanf("%d",&temp);
16             a[temp]++;
17             if (a[temp]>(n+1)/2)
18                 ans=temp;
19         }
20         printf("%d\n",ans);
21     }
22     return 0;
23 }
代码

 

转载于:https://www.cnblogs.com/ACDoge/p/6126676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值