3545 - 幻方填空

 •   幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。

•   欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个4阶幻方。

•   他把1,2,3,...16这16个数字填写在4 x 4的方格中。

•   如图所示,即:

16 ? ? 13

? ? 11 ?

9 ? ? *

? 15 ? 1

•   表中有些数字已经显露出来,还有些用?和*代替。

•   请你计算出?和*所代表的数字。并把*所代表的数字作为本题答案提交。

 

题目输入

题目输出

输入/输出样例

题目输入


                

题目输出


                

C++解答

#include <algorithm>
#include <iostream>
using namespace std;
#define  N 10
int p[N]={2,3,4,5,6,7,8,10,12,14};
int main()
{
	int r1,r2,r3,r4,c1,c2,c3,c4,d1,d2;//4行,4列和2对角线 
	do
	{
		r1=p[0]+p[1]+29;
		r2=11+p[2]+p[3]+p[4];
		r3=9+p[5]+p[6]+p[7];
		r4=16+p[8]+p[9];
		c1=25+p[2]+p[8];
		c2=15+p[0]+p[3]+p[5];
		c3=11+p[1]+p[6]+p[9];
		c4=14+p[4]+p[7];
		d1=17+p[3]+p[6];
		d2=24+p[5]+p[8];
		if(r1==r2&&r2==r3&&r3==r4&&r4==c1&c1==c2&&c2==c3&&c3==c4&&c4==d1&&d1==d2)
			cout<<p[7];
	}
	while(next_permutation(p,p+N));
	return 0;
}

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题