数学问题,十分让人头大。
代码实现:
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int*)a > *(int*)b ? 1 : -1;
}
int main()
{
int N, *num;
scanf("%d", &N);
num = (int*)malloc(sizeof(int)*N);
for (int i = 0; i < N; i++)
scanf("%d", &num[i]);
qsort(num, N, sizeof(int), cmp);
if (num[0] > N)
printf("%d", N);
else
for (int i = 1; i <= N; i++)
if (num[N - i] <= i)
{
printf("%d", i - 1); break;
}
return 0;
}