思路是輸入后檢測一下是不是輸入的資料合法(不然第一個人一來就輸了),然后累加輸入的資料sum然后和1+2+...+N的sumN比較取余,不知道哪錯了。
#include <bits/stdc++.h>
using namespace std;
int main() {
unsigned int T;
long long N;
long long sum = 0, sumN = 0;
int sign = 1;
cin >> T;
int ans[T];
for (int i = 0; i < T; ++i) {
cin >> N;
vector<long long> num;
long long input;
sum = sumN = 0;
sign = 1;
unsigned int numCount[N] = {0};
for (int j = 1; j <= N; sumN += j, ++j);
for (int j = 0; j < N; ++j) {
cin >> input;
num.push_back(input);
numCount[num[j] - 1]++;
}
unsigned int numCountAll = 0;
for (int j = N - 1; j >= 0; --j) {
numCountAll += numCount[j];
if (numCountAll > N - j) {
sign = 0;
break;
}
}
if (sign == 0) {
ans[i] = 0;
} else {
for (int j = 0; j < N; ++j) {
sum += num[j];
}
int sub = sumN - sum;
if (sub % 2 == 1) {
ans[i] = 1;
} else {
ans[i] = 0;
}
}
}
for (int i = 0; i < T; ++i) {
if (ans[i]) {
printf("First\n");
} else {
printf("Second\n");
}
}
return 0;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267909.html
標籤:其它技術問題
上一篇:求助
下一篇:請教一個OJ題,大佬請看看
