Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33951 | 申东铉 | 【S】T2 | C++ | 运行超时 | 70 | 1251 MS | 1164 KB | 1142 | 2024-10-30 16:43:35 |
#include <bits/stdc++.h> using namespace std; int n,k; vector <pair <int,int> > vc; int main () { 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; } //hahaha //一直以为假了,gcd > 根号n不会做 //后来加了个特判,直接输出-1 //经过一些神秘的数学推算发现 //gcd只能等与n //最后发现k<n 蛤铪哈口合 //根本似不了一点