幻方填空
幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。
欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个4阶幻方。
他把1,2,3,…16 这16个数字填写在4 x 4的方格中。
如图所示,即:
表中有些数字已经显露出来,还有些用?和*代替。
请你计算出? 和 * 所代表的数字。并把 * 所代表的数字作为本题答案提交。
答案:12
#include<bits/stdc++.h>
using namespace std;
int a[15]={2,3,4,5,6,7,8,10,12,14};
int main()
{
do
{
int x=16+a[0]+a[1]+13;
if(a[2]+a[3]+11+a[4]==x && 9+a[5]+a[6]+a[7]==x && a[8]+15+a[9]+1==x && 16+a[2]+9+a[8]==x && a[0]+a[3]+a[5]+15==x && a[1]+11+a[6]+a[9]==x && 13 +a[4]+a[7]+1==x && 16+a[3]+a[6]+1==x && 13+11+a[5]+a[8]==x)
{
cout<<a[7]<<endl;
}
}while(next_permutation(a,a+10));
return 0;
}