这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数
这题其实严格意义上属于一道找规律的题目,并不是啥算法题。
我们可以先按照它的规律多写几行。
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++#include using namespace std; int main() { int n = 20, ans = 1; for (int i = 1; i < n; i++) { ans += i * 4; } cout << ans << endl; return 0; }Python
if __name__ == '__main__': ans, n = 1, 20 for i in range(n): ans += i * 4 print(ans)Answer: 761