第十一屆藍橋杯 ——蛇形填數
阿新 • • 發佈:2021-03-23
問題描述
如下圖所示,小明用從 1 開始的正整數 “蛇形” 填充無限大的矩陣。
容易看出矩陣第二行第二列中的數是 5,請你計算矩陣中第 20 行第 20 列的數是多少?
答案提交
這是一道結果填空的題,你只需要算出結果後提交即可。
本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。
答案:761
題解一
找規律:
解題思路
:對角線上的數分別為 1、5、13、25……
#include <iostream>
using namespace std;
int main()
{
int w = 4, ans = 1;
for (int i = 1; i <= 19; i ++)
{
ans += w;
w += 4;
}
cout << ans << endl;
return 0;
}
題解二
找規律:
解題思路
:
- 第一層的開頭為 1,座標為
(1, 1)
,行列之和為 2; - 第二層的開頭為 2,座標為
(2, 1)
,行列之和為 3; - 第三層的開頭為 4,座標為
(3, 1)
,行列之和為 4; - 第四層的開頭為 7,座標為
(1, 4)
,行列之和為 5;
#include <cstdio>
#include <iostream>
using namespace std;
int g[ 40][40];
int main()
{
int k = 1;
for (int i = 2; i <= 40; i ++) // 列舉行列之和
if(i % 2 == 0)
{
for (int j = 1; j < i; j ++) // 奇數層:從下到上
g[j][i - j] = k ++;
}
else
{
for (int j = i - 1; j >= 1; j --) // 偶數層:從上到下
g[j][i - j] = k ++;
}
for (int i = 1; i <= 20; i ++ )
{
for (int j = 1; j <= 20; j ++) printf("%4d", g[i][j]);
cout << endl;
}
return 0;
}