输入奇数n,计算并输出n位的魔方阵。
说明:
(1) 魔方阵就是n*n个不同的正整数按方阵排列时,它的每一行,每一列以及沿对角线的几个数的和具有同一性质的方阵。
(2) 由1到n*n个自然数数构成的魔方阵是最基本的,又称为“幻方”,这种方阵的每行、每列和每个对角线上的元素的和全部相等,亦即等于一个常数。该常数是n(n*n+1)/2。
(3) 方法: 首先确定1的位置,通常放在第一行的中间位置; 然后当前自然数的右上方放下一个自然数; 如果当前自然数在第一行但不在最右侧,则下一个自然数在最后一行,列数右移一列; 如果当前自然数在第一行最右侧,则下一个自然数在当前自然数的下侧; 如果当前自然数在其它行的最右侧,则下一个自然数在上一行的最左侧。
说明:
(1) 魔方阵就是n*n个不同的正整数按方阵排列时,它的每一行,每一列以及沿对角线的几个数的和具有同一性质的方阵。
(2) 由1到n*n个自然数数构成的魔方阵是最基本的,又称为“幻方”,这种方阵的每行、每列和每个对角线上的元素的和全部相等,亦即等于一个常数。该常数是n(n*n+1)/2。
(3) 方法: 首先确定1的位置,通常放在第一行的中间位置; 然后当前自然数的右上方放下一个自然数; 如果当前自然数在第一行但不在最右侧,则下一个自然数在最后一行,列数右移一列; 如果当前自然数在第一行最右侧,则下一个自然数在当前自然数的下侧; 如果当前自然数在其它行的最右侧,则下一个自然数在上一行的最左侧。
n(n*n+1)/2是怎么推倒的啊???
而且这个版的斑竹一个不认识。我只会创建n为奇数的幻方
又因为磨坊中每个数出现且只出现一次,所以磨坊所有的数之和,及n行之和为1...n*n (显然一共有n*n个数)的相加,及(n*n)*(n*n +1)/2
由上
n*x = (n*n)*(n*n +1)/2
所以x = n(n*n+1)/2
over
你如果不写,也说个大概吧。提醒一下我。这个要求不过分吧,呵呵。