3545 - 幻方填空
时间限制 : 1 秒
内存限制 : 128 MB
• 幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。
• 欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个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; }