Submission #1691746


Source Code Expand

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;

int read() {
	int x = 0, f = 1; char c = getchar();
	while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }
	while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }
	return x * f;
}

#define maxn 100010

int n, ceven, A[maxn];

int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }

int main() {
	int sum = 0; bool has1 = 0, cur = 0;
	n = read();
	for(int i = 1; i <= n; i++) A[i] = read(), ceven += !(A[i] & 1), has1 |= (A[i] == 1), (sum += A[i] - 1) &= 1;
	
	if(has1) return puts(sum ? "First" : "Second");
	if(ceven & 1) return puts("First"), 0;
	if(n - ceven > 1) return puts("Second"), 0;
	for(; ;) {
		cur ^= 1;
		for(int i = 1; i <= n; i++) if(A[i] & 1) A[i]--;
		int g = A[1];
		for(int i = 2; i <= n; i++) g = gcd(g, A[i]);
		ceven = sum = has1 = 0;
		for(int i = 1; i <= n; i++) A[i] /= g, ceven += !(A[i] & 1), has1 |= (A[i] == 1), (sum += A[i] - 1) &= 1;
		if(has1) return puts((sum ^ cur) ? "First" : "Second");
		if(n - ceven > 1) return puts(((ceven & 1) ^ cur) ? "First" : "Second"), 0;
	}
	
	return 0;
}

Submission Info

Submission Time
Task A - Addition
User xjr
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1205 Byte
Status RE
Exec Time 9 ms
Memory 640 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status
RE × 2
WA × 10
RE × 6
Set Name Test Cases
Sample sample1.txt, sample2.txt
All sample1.txt, sample2.txt, in1.txt, in10.txt, in11.txt, in12.txt, in2.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt
Case Name Status Exec Time Memory
in1.txt WA 9 ms 640 KB
in10.txt WA 9 ms 640 KB
in11.txt RE 1 ms 256 KB
in12.txt RE 1 ms 256 KB
in2.txt WA 9 ms 640 KB
in3.txt WA 9 ms 640 KB
in4.txt WA 9 ms 640 KB
in5.txt WA 9 ms 640 KB
in6.txt WA 9 ms 640 KB
in7.txt WA 9 ms 640 KB
in8.txt WA 9 ms 640 KB
in9.txt WA 9 ms 640 KB
sample1.txt RE 1 ms 256 KB
sample2.txt RE 1 ms 256 KB