NC231600. 智乃与三元环
描述
输入描述
第一行包含一个正整数 n (3≤n≤1e5),表示点的个数。
输出描述
第一行输出一个整数 k ,表示三元环个数,如果不存在方案则输出-1。接下来有 k 行,每行三个数表示一个三元环。
示例1
输入:
3
输出:
1 1 2 3
示例2
输入:
4
输出:
-1
C++(g++ 7.5.0) 解法, 执行用时: 21ms, 内存消耗: 1096K, 提交时间: 2022-12-16 14:56:13
#include<bits/stdc++.h> using namespace std; #define int long long signed main() { int n; cin>>n; if(n==4) { puts("-1");return 0; } if(n&1) { cout<<n/2<<'\n'; for(int i=2;i<=n;i+=2) cout<<1<<" "<<i<<" "<<i+1<<'\n'; } else { cout<<n/2<<'\n'; cout<<2<<" "<<3<<" "<<5<<'\n'; for(int i=3;i<=n;i+=2) cout<<1<<" "<<i<<" "<<i+1<<'\n'; } return 0; }
pypy3 解法, 执行用时: 171ms, 内存消耗: 29236K, 提交时间: 2021-12-07 17:58:44
n = int(input()) if n == 4: print(-1) exit() if n % 2: print(n//2) for i in range(2, n, 2): print(1, i, i+1) else: print(n//2) for i in range(3, n, 2): print(1, i, i+1) print(2, 3, 5)
C++ 解法, 执行用时: 13ms, 内存消耗: 1160K, 提交时间: 2021-12-08 09:33:58
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; if (n==4) { puts("-1"); return 0; } printf("%d\n",n/2); for (int i=2;i<=n;i+=2) { printf("%d %d %d\n",i-1,i,(i+1>n)?1:i+1); } return 0; }