提交时间:2024-10-30 16:43:25
运行 ID: 33950
#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; }