据说是去年的网络赛上最好做的一道题。
题意是一群排好队的人报数,找出报错数的那个人。
代码:
#include <stdio.h>
int s[1000001];
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif // LOCAL
int ncase;
scanf("%d", &ncase);
for (int t = 1; t <= ncase; t++)
{
int k;
scanf("%d", &k);
for (int i = 1; i <= k; i++)
{
scanf("%d", &s[i]);
}
//若数据为 2 4 5 6 7 8 。
//则报错的为第一个人,如果i从2开始遍历,则若第一个人报数错的时候会判别为第二个人报错。
//所以从i = 3 开始遍历,若之后都没有报错的,则为第一个人报数错误,用一个flag来标记。
bool flag = false;
for (int i = 3; i <= k; i++)
{
if (s[i - 1] + 1 != s[i])
{
printf("Case #%d: %d\n", t, i);
flag = true;
break;
}
}
if (!flag)
printf("Case #%d: 1\n", t);
}
return 0;
}