CSES - Putka Open 2020 – 4/5 - Results
Submission details
Task:Neliöt
Sender:Olli
Submission time:2020-11-06 18:04:05 +0200
Language:C++11
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED28
#2ACCEPTED72
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2details
#2ACCEPTED0.02 s1, 2details
#3ACCEPTED0.02 s2details

Code

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>
#include <set>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define F first
#define S second
#define X first
#define Y second

const int N = 1e5 + 5;
const ll INF = 1e18;


int gpd[N];
bool pr[N];

void sieve() {
	for(int i = 2; i < N; ++i) {
		pr[i] = true;
	}
	for(ll i = 2; i < N; ++i) {
		if(!pr[i]) continue;
		gpd[i] = i;
		for(ll j = 2*i; j < N; j+=i) {
			gpd[j] = i;
			pr[j] = false;
		}
	}
}

int main() {
	sieve();
	int t;
	cin >> t;
	while(t > 0) {
		--t;
		ll n;
		cin >> n;
		
		bool ans = true;
		for(int j = 2; j <= 1e5; ++j) {
			if(!pr[j]) continue;
			if(n%j == 0) {
				if(j%4 == 3) {
					int e = 0;
					while(n%j == 0) {
						n/=j;
						++e;
					}
					if(e%2 == 1) {
						ans = false;
						break;
					}
				}
				while(n%j == 0) {
					n/=j;
				}
			}
		}
		if(n != 1) {
			if(n%4 == 3) {
				ans = false;
			}
		}
		if(ans) {
			cout << "YES\n";
		} else {
			cout << "NO\n";
		}

	}
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
100
1
2
3
4
...

correct output
YES
YES
NO
YES
YES
...

user output
YES
YES
NO
YES
YES
...

Test 2

Group: 1, 2

Verdict: ACCEPTED

input
100
522
419
402
969
...

correct output
YES
NO
NO
NO
NO
...

user output
YES
NO
NO
NO
NO
...

Test 3

Group: 2

Verdict: ACCEPTED

input
100
575833539
744851460
436154655
655319365
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...