CSES - Putka Open 2020 – 4/5 - Results
Submission details
Task:Tekijät
Sender:tsiki2
Submission time:2020-11-08 22:30:26 +0200
Language:C++ (C++11)
Status:READY
Result:47
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED35
#30
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3details
#2ACCEPTED0.01 s1, 2, 3details
#3ACCEPTED0.01 s2, 3details
#40.01 s3details
#50.01 s3details
#60.01 s3details
#70.01 s3details

Compiler report

input/code.cpp: In function 'std::vector<int> primes(int)':
input/code.cpp:43:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if (n > 2)
     ^~
input/code.cpp:45:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
     return ans;
     ^~~~~~
input/code.cpp: In function 'std::vector<int> uprimes(int)':
input/code.cpp:66:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if (n > 2)
     ^~
input/code.cpp:68:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
     return ans;
     ^~~~~~

Code

#include <stdio.h> // include before iostream for faster scanf
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <utility>
#include <set>
#include <unordered_set>
#include <cmath>
#include <math.h>
#include <queue>
#include <stdlib.h>
#include <string.h>
#include <sstream>
#include <tuple>
#include <utility>
#include <iomanip>
#include <iterator>
using namespace std;
typedef long long LL;
#define printv(printVec) for (auto printVecIter : (printVec)) cout << printVecIter << " "; cout << endl;
// g++ -Wall -Wshadow -std=c++11 a.cpp && ./a.out
vector<int> primes(int n) {
vector<int> ans;
while (n % 2 == 0) {
ans.push_back(2);
n = n/2;
}
for (int i = 3; i <= sqrt(n); i = i + 2) {
while (n % i == 0)
{
ans.push_back(i);
n = n/i;
}
}
if (n > 2)
ans.push_back(n);
return ans;
}
vector<int> uprimes(int n) {
vector<int> ans;
while (n % 2 == 0) {
if ((ans.size() && ans.back() != 2) || ans.size() == 0)
ans.push_back(2);
n = n/2;
}
for (int i = 3; i <= sqrt(n); i = i + 2) {
while (n % i == 0)
{
if ((ans.size() && ans.back() != i) || ans.size() == 0)
ans.push_back(i);
// ans.push_back(i);
n = n/i;
}
}
if (n > 2)
ans.push_back(n);
return ans;
}
bool isprime(int n) {
vector<int> ans;
while (n % 2 == 0) {
return false;
}
for (int i = 3; i <= sqrt(n); i = i + 2) {
if (n % i == 0)
{
return false;
}
}
return true;
}
int gcd(int a , int b)
{
if(b==0) return a;
a%=b;
return gcd(b,a);
}
int main() {
std::ios::sync_with_stdio(false);cin.tie(0);
int n; cin>>n;
vector<int> nums(101);
for (int i =0;i<n; i++) {
int tmp; cin >>tmp;
nums[tmp]++;
}
LL ans = 0;
for (int i = 0; i < 101; i++) {
for (int j = i+1; j < 101; j++) {
if (gcd(i,j) == 1) {
ans += nums[i] * (LL) nums[j];
}
}
}
ans += nums[1]*(nums[1] - 1)/2;
cout << ans << endl;
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
100
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
3043

user output
3043

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
100
71 19 26 18 57 78 80 89 31 26 ...

correct output
3086

user output
3086

Test 3

Group: 2, 3

Verdict: ACCEPTED

input
100000
66 87 90 67 93 89 57 29 34 4 8...

correct output
3044751906

user output
3044751906

Test 4

Group: 3

Verdict:

input
100000
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
3039650753

user output
(empty)

Test 5

Group: 3

Verdict:

input
100000
238907 151373 522599 885657 37...

correct output
3031155756

user output
(empty)

Test 6

Group: 3

Verdict:

input
100000
510510 510510 510510 510510 51...

correct output
0

user output
(empty)

Test 7

Group: 3

Verdict:

input
100000
999983 999983 999983 999983 99...

correct output
0

user output
(empty)