给你一个从 n×nn \times nn×n 的矩阵,里面填充 111 到 n×nn \times nn×n 。例如当 nnn 等于 333 的时候,填充的矩阵如下。
1
1 2 3
2
4 5 6
3
7 8 9
现在我们把矩阵中的每条边的中点连起来,这样形成了一个新的矩形,请你计算一下这个新的矩形的覆盖的数字的和。比如,n=3n = 3n=3 的时候矩形覆盖的数字如下。
xxxxxxxxxx
3
1
2
2
4 5 6
3
8
那么当
nnn 等于
101101101 的时候,矩阵和是多少?
题解:我们可以根据阳历模拟一下过程,然后找一下规律,写出模拟过程,具体代码如下:
#include <iostream>
#include <math.h>
using namespace std;
int a[1000][1000];
int main()
{
int n,m,t,sum;
cin>>n;
t = 1; sum = 0; m = n / 2;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
a[i][j] = t++;
}
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if(i <= m && j >= m - i && j <= m + i) //计算上半三角的和(包括中线部分)
{
sum += a[i][j];
}
else if(i > m && j >= i - m && j <= n - (i - m + 1)) //计算下半三角的和(不包括中线部分)
{
sum += a[i][j];
}
}
}
cout<<sum;
return 0;
}