1. 程式人生 > 其它 >第十一屆藍橋杯 ——蛇形填數

第十一屆藍橋杯 ——蛇形填數

問題描述
如下圖所示,小明用從 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; }

藍橋杯C/C++組省賽歷年題