第三题:蛇形填数
题目描述
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?
1 2 6 7 15 …
3 5 8 14 …
4 9 13 …
10 12 …
11 …
解题思路:
把这个图片旋转45°,规律不难看出,第二十行二十列所对应的金字塔中的数字为20+19=39行的中间那位数。
而金字塔的每排两端的数字都可以理解为公差为1的等差数列。
所以最边上的数字为1加到39.以及总和减38,相加除以二即为答案。
#include<iostream>
using namespace std;
int main()
{
//首先计算第20行20列位于三角形第几行,用公式算出是2*20-1=39行
//计算39行的最后一个数
int n = 20;
n = n*2-1;
int ans = 0,sum = 0;
for(int i = 1; i <=n ;i++)
{
sum+=i;
}
ans = (sum+sum-n+1)/2;
cout << ans <<endl;
return 0;
}
答案为761