码迷,mamicode.com
首页 > 其他好文 > 详细

Sicily 1302 Magic Square (数论)

时间:2014-05-15 07:01:20      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:sicily

链接:http://soj.me/1302

题目中有图和表格,所以就不把题目信息列出来了,打开链接直接看就行了。。。


分析:

从填幻方的过程,可以判断一下几点:
1>.幻方的每一列都是向下发展的;
2>.填入的前n个数都刚好是每一列第一个填入的数;
从这两点可以推出下面几点:
(1). 每一列的发展是平面的(即每一列的个数是一样的,特别的,只有一列少一);
(2). 右下角那个数肯定是填入的最大的;
(3). 当我们填入到右下角的时候,每一列的个数都刚好是n/2(注意n是奇数,这里的除是整除)


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;

int main()
{
    long long n;
    double m;
    while(~scanf("%lld", &n) && n) {
        if(n == 1) { puts("1"); continue; }
        m = n;
        printf("%0.0lf\n", (m*m+1)/2-(m+1)/2-1+0.1);
    }
    return 0;
}


Sicily 1302 Magic Square (数论),布布扣,bubuko.com

Sicily 1302 Magic Square (数论)

标签:sicily

原文地址:http://blog.csdn.net/keshacookie/article/details/25736199

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!