寻找数字
题目链接:ybt 入门到进阶模拟赛 Day1 T1
题目大意
给你一个数组,问你里面有多少个数的出现次数超过了四分之一。
思路
直接排序一遍,然后计算出出现的每个数组的次数,然后比较,把可以的一次输出就可以。
记得最后的数组也要统计,然后要记得如果没有可以的,要输出 No number.
。
(一定要有 .
!)
代码
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
int n, number, times;
ll a[50001];
int main() {
// freopen("find.in", "r", stdin);
// freopen("find.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%lld", &a[i]);
sort(a + 1, a + n + 1);
times = 1;
for (int i = 2; i <= n; i++)
if (a[i] != a[i - 1]) {
if (times > n / 4) {
printf("%lld\n", a[i - 1]);
number++;
}
times = 1;
}
else {
times++;
}
if (times > n / 4) {
printf("%lld\n", a[n]);
number++;
}
if (!number) printf("No number.");
return 0;
}