#引言:大学入门第一个竞赛就从蓝桥杯开始,用C还是Python是个问题,C可以巩固大一学的,但Python简单且有基础,几经思量还是决定用Python——毕竟学人工智能不能不用Python。于是便开始了——我的蓝桥杯!
24.9.27——蓝桥杯练习Day1:
今日两题
试题A:卡片
小蓝有很多数字卡片,每张卡片上都是数字0到9,小蓝准备用这些卡片来拼一些数,他想从 1开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从1拼到多少?
例如,当小蓝有30 张卡片,其中0到9各3张,则小蓝可以拼出1到10,但是拼11时卡片1已经只有一张了,不够拼出 11。
现在小蓝手里有0到9的卡片各 x张,共x*10张,请问小蓝可以从1拼到多少?
用简单的遍历来解题:从1开始遍历到卡片不足够用来拼出这个数字。
x=int(input("please input cards number:"))
a=[x]*10
i=0
while True:
i+=1
tep=i
flag=True
while tep:
a[tep%10]-=1
if a[tep%10]==-1:
flag=False
break
tep=tep//10 #error一次计算最后一位之后应该对原数据整除十
if not flag:
print(i-1)
break
这里犯了一次蠢计算最后一位之后应该对原数据整除十——引以为戒!
试题B:直线
在平面直角坐标系中,两点可以确定—条直线。如果有多点在—条直线上,那么这些点中任意两点确定的直线是同一条。
给定平面上2×3个整点(x,y)| 0 ≤x<2,0≤y<3,x ∈ Z,y ∈ Z,即横坐标是0到1(包含0和1)之间的整数、纵坐标是0到2(包含0和2)之间的整数的点。这些点—共确定了11条不同的直线。
给定平面上20 x 21个整点,(x,y)|0≤x<20,0≤y<21,x ∈ Z,y ∈ Z,即横坐标是0到19(包含0和19)之间的整数、纵坐标是0到20(包含0和20)之间的整数的点。
请问这些点—共确定了多少条不同的直线。
改为a*b个整点
#思路:用直线的(斜率,截距)存入元组来去重并len()函数实现计数
先去除水平和竖直的直线
a,b=map(int,input('please input two numbers(use , to split):').split(','))
sum=a+b
lis=[]
ans=set() #创造一个没有重复元素的集合实现直线的去重
for x in range(a):
for y in range(b):
lis.append([x,y])
for point1 in lis:
for point2 in lis:
if point1[0]==point2[0] or point1[1]==point2[1]: #剔除水平与垂直的直线
continue
k=(point2[1]-point1[1])/(point2[0]-point1[0])
b=(point1[1]*point2[0]-point2[1]*point1[0])/(point2[0]-point1[0])
ans.add((k, b))
print(len(ans)+sum)
#print(len(ans)+a+b)
#!!!!一个严重的问题上面的输出结果是float,且值是len+(a,b间大者)——24.09.27未解决
一个严重的问题上面打井号的输出结果是float,且值是len+(ab间大者)——24.09.27未解决
等我研究一下来解决
Day1终——进步ing