codeforces A. Candy Bags 解题报告
2013-07-27 22:28
323 查看
题目链接:http://codeforces.com/contest/334/problem/A
题意:有n个人,将1~n袋(第 i 袋共有 i 颗糖果,1<= i <=n)所有的糖果(n*(n+1)/2)均分到n个人中。
这里要注意的是输出问题,每行中的前n / 2(包括n/2)个数比较容易解决,就是每两个数中相隔n个长度,第n/2个数和第n/2+1个数之间隔了多少个长度,这是值得考虑的问题。我的做法是,由于每个人分到的糖果是 (n / 2) * (n*n+1) (输出的n个数看成n/2个组合,每个组合有两个数,这两个数中的和恰好是n*n+1),所以用一个数组存储后半部分n/2+1 ~ n。例如输入的n为6,输出如下:
第一个人: 1 7 13 24 30 36
第二个人: 2 8 14 23 29 35
第三个人: 3 9 15 22 28 34
第四个人: 4 10 16 21 27 33
第五个人: 5 11 17 20 26 32
第六个人: 6 12 18 19 25 31
以第一个人作为分析:1和36是一个组合,另外两个组合分别是7和30,13和24,当输出1的时候,计算出36(6*6+1-1),存入temp[0],输出7的时候,计算出30(37-7),存入temp[1],输出13,计算出24,存入temp[2],最后按逆序(2--->0)输出即可。可能方法有点笨,希望热心的读者可以提出些更好的方法,让我学习学习。
题意:有n个人,将1~n袋(第 i 袋共有 i 颗糖果,1<= i <=n)所有的糖果(n*(n+1)/2)均分到n个人中。
这里要注意的是输出问题,每行中的前n / 2(包括n/2)个数比较容易解决,就是每两个数中相隔n个长度,第n/2个数和第n/2+1个数之间隔了多少个长度,这是值得考虑的问题。我的做法是,由于每个人分到的糖果是 (n / 2) * (n*n+1) (输出的n个数看成n/2个组合,每个组合有两个数,这两个数中的和恰好是n*n+1),所以用一个数组存储后半部分n/2+1 ~ n。例如输入的n为6,输出如下:
第一个人: 1 7 13 24 30 36
第二个人: 2 8 14 23 29 35
第三个人: 3 9 15 22 28 34
第四个人: 4 10 16 21 27 33
第五个人: 5 11 17 20 26 32
第六个人: 6 12 18 19 25 31
以第一个人作为分析:1和36是一个组合,另外两个组合分别是7和30,13和24,当输出1的时候,计算出36(6*6+1-1),存入temp[0],输出7的时候,计算出30(37-7),存入temp[1],输出13,计算出24,存入temp[2],最后按逆序(2--->0)输出即可。可能方法有点笨,希望热心的读者可以提出些更好的方法,让我学习学习。
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; const int maxn = 10000 + 10; int main() { int i, j, k, l, n, temp[maxn]; while (scanf("%d", &n) != EOF) { for (i = 1; i <= n; i++) { k = 0; for (j = i; j <= (n * n / 2); j += n) { if (j == i) printf("%d", j); else printf(" %d", j); temp[k++] = n * n + 1 - j; } for (l = n / 2 -1; l >= 0; l--) { printf(" %d", temp[l]); } printf("\n"); } } return 0; }
相关文章推荐
- Codeforces Round #231 (Div2) 迟到的解题报告
- codeforces Round #272(div2) C解题报告
- Codeforces Round #274 (Div. 2) 解题报告 (C D E)
- codeforces A. Xenia and Divisors 解题报告
- Codeforces Round #277.5 (Div. 2) 解题报告
- Codeforces Round #401 (Div. 2)解题报告
- Codeforces Round #262 (Div. 2)解题报告
- Codeforces Round #142 (Div. 2) 解题报告
- Codeforces Round #265 (Div. 2) 解题报告
- codeforces #232 div2 解题报告
- codeforces Round #272(div2) D解题报告
- 【解题报告】Educational Codeforces Round 16
- Codeforces Round #298 (Div. 2) 解题报告 (ABCD)
- Codeforces Round #306 (Div. 2) D.E. 解题报告
- Codeforces Round #313 (Div. 2) 解题报告
- Codeforces Round #281 (Div. 2) 解题报告 A.B.C.D.
- Codeforces Rockethon 2015 解题报告
- Codeforces Round #189 (Div. 2) 解题报告
- Codeforces Round #211 (Div. 2) D题(二分,贪心)解题报告
- codeforces Round #264(div2) A解题报告