蓝桥杯A组——大一入门(09.27)

#引言:大学入门第一个竞赛就从蓝桥杯开始,用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值