EOJ Monthly 2019.3A

Posted mj-liylho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOJ Monthly 2019.3A相关的知识,希望对你有一定的参考价值。

A. 钝角三角形

单点时限: 3.0 sec

内存限制: 512 MB

QQ 小方以前不会判断钝角三角形,现在他会了,所以他急切的想教会你。

如果三角形的三边长分别为 abc (abc),那么当满足 a2+b2<c2 且 a+b>c 的时候,这个三角形就是一个由三边长为 abc 构成的钝角三角形。

单单讲给你听肯定是不够的,为了表现自己,QQ 小方现在要考考你。

现在 QQ 小方会给你一个包含 3n 个整数的集合,分别是 {2,3,4,?3n,3n+1} ,他想让你将这个集合里面的数分成 n 组,保证每个数都被分到其中一个组,并且每个组恰好有 3 个数。当然,你要保证每组的 3 个数作为边长所构成的三角形是一个钝角三角形。

输入格式

输入仅包含一行一个整数 n (1n106)。

输出格式

输出应该包含 n 行,每行三个整数,表示分组。

应该满足题目所给的分组要求。

如果有多个可能的解,输出任意一个解。

如果不存在这样的解,请输出 1

样例

input
1
output
2 3 4
思路:将所给的数字按大小分成三组,第一个数字从第一组选,其他两个数字按奇偶从另外两个数组选。
例:n=4 ,{2,3,4,5} {6,7,8,9} {10,11,12,13}  => {2,7,8} {3,11,12} {4,6,9} {5,10,13}
代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e4+5;
 4 #define db double
 5 const db eps=1e-8;
 6 
 7 int main()
 8 {
 9     int n;
10     cin>>n;
11     if(n==1) puts("2 3 4");
12     else if(n==2) puts("2 4 5"),puts("3 6 7");
13     else
14     {
15         int m=n+1;
16         if(n&1) printf("%d %d %d
",n+1,2*n+1,3*n+1),m--;
17         for(int i=2;i<=m;i++){
18             if(i&1) printf("%d %d %d
",m+3-i,2*n+1+i/2,2*n+(m+1-i/2));
19             else    printf("%d %d %d
",m+1-i,n+1+i/2,n+1+(m-i/2));
20         }
21     }
22 }

 

以上是关于EOJ Monthly 2019.3A的主要内容,如果未能解决你的问题,请参考以下文章

EOJ Monthly 2018.7

EOJ Monthly 2021.9 Sponsored by TuSimple(A)

EOJ Monthly 2020.7 A. 打字机

[EOJ Monthly] 2019.9

EOJ Monthly 2018.2 (Good bye 2017)

EOJ Monthly 2018.1 F 最小OR路径