奇安信2020春招校招测试工程师笔试编程题

奇安信2020春招校招测试工程师笔试编程题

1、小明有N元钱去药店买口罩,药店有6个品牌的口罩,A品牌2元/2个,B品牌2元/3个,C品牌3元/1个,D品牌1元/5个,E品牌5元/4个,F品牌2元/3个,由于限购,每个品牌的口罩只能购买一份,小明最多购买几个?

1

解:从数学题的角度来讲,要买到最多口罩,就从最便宜的开始买,直到没钱为止。

A:1元/个,B/F:0.66元/个,C:3元/个,D:0.25元/个,E:1.25/个

那么购买的顺序为DBFAEC

所以输入9时,可以购买5+3+3+2=13

import sys
def buy(money):
    sum = 0
    if money > 1 and money < 15:
        if money >= 1:
            sum += 5
            money -= 1
            if money >= 2:
               sum += 3
               money -= 2
               if money >= 2:
                    sum += 3
                    money -= 2
                    if money >= 2:
                        sum += 2
                        money -= 2
                        if money >= 5:
                            sum += 4
                            money -= 5
                            if money >= 3:
                                sum += 1
                                money -=3
    return sum

money = int(sys.stdin.readline()) 
#for line in sys.stdin:
#    money = int(line)
print(buy(money))

当时在做输入输出的时候愣是搞了一会儿才明白他要求的代码规范,之前都是直接用input_,我只是个刚学python的小菜鸡。

后来查了一下,input()方法和stdin()实现的功能是基本一致的,input()可以直接在括号内填写文字~

2、第二题题目太长了,就简单的描述一下。
奇安信2020春招校招测试工程师笔试编程题_第1张图片
如图中的三角型,S1=1+2+3+4,S2=4+5+6+7,S3=7+8+9+1

要求输入9个数字,判断这个三角形是不是等边三角型,是输出yes,不是输出no。

例子:

​ 输入:3,4,8,5,2,6,7,1,9

​ 输出:yes

import sys
def panduan(list_shuru):
    s1 = int(list_shuru[1]) + int(list_shuru[2]) + int(list_shuru[3]) + int(list_shuru[0])
    s2 = int(list_shuru[4]) + int(list_shuru[5]) + int(list_shuru[3]) + int(list_shuru[6])
    s3 = int(list_shuru[7]) + int(list_shuru[8]) + int(list_shuru[0]) + int(list_shuru[6])

    if s1 == s2 == s3 :
        return 'yes'
    else:
        return 'no'

for line in sys.stdin:
    list_shuru = line.split(',')  #输入数字,以逗号隔开
    print(panduan(list_shuru))

你可能感兴趣的:(奇安信2020春招校招测试工程师笔试编程题)