【问题描述】
小蓝要为一条街的住户制作门牌号。 这条街一共有2020位住户,门牌号从1到2020编号。 小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上, 例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0, 2个字符1, 1个字符7。 请问要制作所有的1到2020号门牌,总共需要多少个字符2?
num = 0
for i in range(1,2021):
num += str(i).count("2")
print(num)
【问题描述】
小蓝每天都锻炼身体。 正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。 小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到 2020年 10月 1日周四(含)。 请问这段时间小蓝总共跑步多少千米?
from datetime import *
now = datetime(2000,1,1)#初始化日期
endl = datetime(2020,10,1)#结束日期
count = 0
datetime = timedelta(1)
while now <= endl:
if now.day == 1 or now.isoweekday() == 1:
count += 1
count += 1
now += datetime
print(count)
"""
datetime.datetime.now() 表示当前时间
datetime.datetime.now().isoweekday() 返回1-7,代表周一到周日,当前时间所在本周第几天;
datetime.datetime.now().weekday() 返回的0-6,代表周一到周日
"""
【问题描述】
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。 给定平面上2×3个整点{(x, y)[0 ≤x <2,0≤y <3,x ∈ Z,y ∈Z},即横坐标是0到1(包含0和 1)之间的整数、纵坐标是О到2(包含0和2)之间的整数的点。这些点一共确定了11条不同的直线。 给定平面上20×21个整点{(x, y)0 ≤x <20,0 ≤y < 21,x ∈ Z,y ∈ Z),即横坐标是О到19(包含0和19)之间的整数、纵坐标是О到20(包含0和20)之间的整数的点。 请问这些点一共确定了多少条不同的直线。
points=[[x,y] for x in range(20) for y in range(21)] #创建二维列表:代表xy坐标系
docker=set() #创建集合属性的容器:因为集合里的元素不会重复
for i in points: #二重循环遍历每个坐标
x1,y1=i[0],i[1] #注意书写格式:a,b=c,d
for j in points:
x2,y2=j[0],j[1]
if x1==x2: #特殊情况:直线垂直时斜率不存在,先跳过最后计算
continue
k=(y2-y1)/(x2-x1) #斜率公式
b=(x2*y1-x1*y2)/(x2-x1) #截距公式
if (k,b) not in docker: #存入容器里没有的(斜率,截距)对
docker.add((k,b))
print(len(docker)+20) #输出结果:容器的长度40237+斜率不存在的20种情况=40257
【问题描述】
小蓝有一个超大的仓库,可以摆放很多货物。 小蓝有n箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上分别堆L、W、H的货物,满足n=LxW×H。 给定n,请问有多少种堆放货物的方案满足要求。 例如,当n = 4时,有以下6种方案:1×1x4、1×2×2、1x4×1、2×1×2、2×2×1、4×1×1。 请问,当n = 2021041820210418(注意有16位数字)时,总共有多少种方案?
def H(n):
flag = 0
for i in range(1,n+1):
if n%i == 0:
for j in range(1,n+1):
if (n/i)%j == 0:
flag += 1
return flag
print(H(2021041820210418))
【问题描述】
小明对数位中含有2、0、1、9的数字很感兴趣, 在1到40中这样的数包括1、2、9、10至32、39和40,共 28个,他们的和是574,平方和是14362. 注意,平方和是指将每个数分别平方后求和。 请问,在1到2019中,所有这样的数的平方和是多少?
def P (n):
num = 0
for i in range(1,n+1):
if str(i).count('2')+str(i).count('0')+str(i).count('1')+str(i).count('9')>0:
num = num + i*i
return num
print(P(2019))