题目中有图和表格,所以就不把题目信息列出来了,打开链接直接看就行了。。。
分析:
从填幻方的过程,可以判断一下几点:
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 (数论)
时间: 2024-10-03 23:16:47