# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
642936 | danikoynov | Present (RMI21_present) | C++14 | 1119 ms | 174508 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/**
____ ____ ____ ____ ____ ____
||l |||e |||i |||n |||a |||d ||
||__|||__|||__|||__|||__|||__||
|/__\|/__\|/__\|/__\|/__\|/__\|
**/
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
void speed()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
const int maxn = 1e6 + 10, maxnum = 150;
vector < vector < int > > st;
int gcd[maxnum][maxnum];
void preprocess()
{
for (int i = 1; i < maxnum; i ++)
for (int j = 1; j < maxnum; j ++)
gcd[i][j] = __gcd(i, j);
int mask = 0;
while(st.size() < maxn)
{
vector < int > num;
for (int bit = 0; (1 << bit) <= mask; bit ++)
if ((mask & (1 << bit)))
num.push_back(bit + 1);
bool tf = true;
int atl = 0;
for (int i = 0; i < num.size() && tf; i ++)
for (int j = i + 1; j < num.size(); j ++)
{
int x = gcd[num[i]][num[j]];
if ((mask & (1 << (x - 1))) == 0)
{
atl = x;
tf = false;
break;
}
}
if (tf)
{
st.push_back(num);
mask ++;
}
else
mask = (mask | (1 << (atl - 1)));
}
///cout << "Done " << mask << endl;
//exit(0);
}
void solve()
{
int n;
cin >> n;
cout << st[n].size();
for (int v : st[n])
cout << " " << v;
cout << endl;
}
int main()
{
preprocess();
int t;
cin >> t;
while(t --)
solve();
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |