题目:http://codeforces.com/contest/259/problem/B
一个magic square满足每行每列每对角线的和相等
给出一个除去主对角线(main diagonal)的square 求magic square
思路:这题受input sample的影响,一开始傻逼了...以为每个数都小于10...然后就枚举了...然后发现数据的上限是105 ...
正解是 设每行每列每对角线的和为sum,magic square中所有数字加起来的和为3*sum;
所以剩下的数的和为2*sum
#include <iostream> using namespace std; int arr[3][3]; int main() { int sum=0; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cin >> arr[i][j]; sum+=arr[i][j]; } } sum/=2; arr[0][0]=sum-arr[0][1]-arr[0][2]; arr[1][1]=sum-arr[1][0]-arr[1][2]; arr[2][2]=sum-arr[2][0]-arr[2][1]; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cout << arr[i][j]<<" "; } cout << endl; } return 0; }