矩阵求和
第一次做时理解错了题意,只算了中间对角线构成的十字形,题目真正的意思是由边abcd的中点依次连接组成的矩形所包含的所有点的值的和。
可以将这个矩形看成被一个十字形分成了四个象限,然后分别求出四个象限的和,加在一起后十字形被加了两次,中间十字焦点被加了四次,则我们减掉一次十字形,两次焦点即为总面积。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int a[110][110]; 5 6 int main(){ 7 int cnt=1; 8 for(int i=1;i<=101;i++){ 9 for(int j=1;j<=101;j++){ 10 a[i][j]=cnt++; 11 } 12 } 13 /*for(int i=1;i<=101;i++){ 14 for(int j=1;j<=101;j++){ 15 cout<<a[i][j]<<" "; 16 }cout<<endl; 17 }*/ 18 cnt=0; 19 int sum=0; 20 for(int i=1;i<=101;i++){ 21 sum+=a[i][51]; 22 sum+=a[51][i]; 23 } 24 for(int i=1;i<=51;i++){ 25 for(int j=51;j>51-i;j--){ 26 cnt+=a[i][j]; 27 } 28 } 29 for(int i=1;i<=51;i++){ 30 for(int j=51;j<51+i;j++){ 31 cnt+=a[i][j]; 32 } 33 } 34 for(int i=51;i<=101;i++){ 35 for(int j=51;j>i-51;j--){ 36 cnt+=a[i][j]; 37 } 38 } 39 for(int i=51;i<=101;i++){ 40 for(int j=51;j<=152-i;j++){ 41 cnt+=a[i][j]; 42 } 43 } 44 cnt-=sum; 45 cnt-=a[51][51]; 46 cout<<cnt<<endl; 47 return 0; 48 }