这道题同样还是:
2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数
2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数
2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数
Ideas
这题其实严格意义上属于一道找规律的题目,并不是啥算法题。
我们可以先按照它的规律多写几行。
1 2 6 7 15 16 28 29 45 3 5 8 14 17 27 30 44 4 9 13 18 26 31 43 10 12 19 25 32 42 11 20 24 33 41 21 23 34 40 22 35 39 36 38 37
可以发现我们对角线上的元素变化1 -> 5 -> 13 -> 25 -> 41。
然后就是小学生找规律了:
1 + 4 = 5
1 + 4 + 8 = 13
1 + 4 + 8 + 12 = 25
1 + 4 + 8 + 12 + 16 = 41
规律显而易见,然后我们就可以开始敲代码模拟这个过程了。
Code C++#includePythonusing namespace std; int main() { int n = 20, ans = 1; for (int i = 1; i < n; i++) { ans += i * 4; } cout << ans << endl; return 0; }
if __name__ == '__main__':
ans, n = 1, 20
for i in range(n):
ans += i * 4
print(ans)
Answer: 761


