首页 > 代码库 > Sicily 1302 Magic Square (数论)
Sicily 1302 Magic Square (数论)
链接: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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。