Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33950 | 申东铉 | 【S】T2 | C++ | 运行出错 | 0 | 0 MS | 252 KB | 990 | 2024-10-30 16:43:25 |
#include <bits/stdc++.h> using namespace std; int n,k; vector <pair <int,int> > vc; int main () { freopen("tree.in","r",stdin); freopen("tree.out","w",stdout); cin >> n >> k; if (n % 2 == 0) { cout << -1 << endl; return 0; } int g = __gcd(n,k); int m = n / g; for (int i = 1;i < g;i++) { int u = i,v = (i + k) % n; for (int j = 1;j <= m / 2;j++) { vc.push_back(make_pair(u,v)); u = (u + 2 * k) % n; v = (v + 2 * k) % n; } } int u = 0,v = k % n; for (int i = 1;i < g;i++) { vc.push_back(make_pair(i,u)); u = (u + k) % n; v = (v + k) % n; } for (int i = g;i < m;i += 2) { vc.push_back(make_pair(u,v)); u = (u + 2 * k) % n; v = (v + 2 * k) % n; } cout << vc.size() << endl; for (auto p : vc) { cout << p.first << ' ' << p.second << endl; } return 0; }