2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散
Posted _Alex_007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散相关的知识,希望对你有一定的参考价值。
Ideas
一开始想的是以四个点为圆心,画一个半径为2020的圆,所有在四个圆之内的点都是黑色的。
用的是两点之间距离公式,也叫欧几里得距离: ∣ A B ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 |AB|=\\sqrt(x_1-x_2)^2+(y_1-y_2)^2 ∣AB∣=(x1−x2)2+(y1−y2)2
但实际上并不能这么计算,因为欧氏距离表示的两点之间的直线距离,而题目中的扩散并不是直线传播的,而是折线传播的,也就是应该用曼哈顿距离公式。
Code
Python
if __name__ == '__main__':
ans = 0
for x in range(-2100, 4100):
for y in range(-2100, 4100):
if abs(x - 0) + abs(y - 0) < 2021 or \\
abs(x - 2020) + abs(y - 11) < 2021 or \\
abs(x - 11) + abs(y - 14) < 2021 or \\
abs(x - 2000) + abs(y - 2000) < 2021:
ans += 1
print(f"ans = ans")
以上是关于2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散的主要内容,如果未能解决你的问题,请参考以下文章
2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - A.美丽的2
2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - C&C++大学B组 - B.扩散
2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 省赛 - C&C++大学C组 - A.约数个数