字节跳动笔试题

字节跳动笔试题

四道编程题

一、找硬币

题目:硬币有64、16、4、1这四种面值,付1024元,商品需要x元,输出找硬币的最少个数。
输入:

200

输出:

17

代码:

#include 
int main(int argc, char *argv[])
{
	int b;
	scanf("%d",&b);
	b = (1024 - b)/64 + (1024 - b)%64/16 + (1024 - b)%64%16/4 + (((1024 - b)%64)%16)%4;
	printf("%d",b);  
	return 0;
}

二、王大锤的自动校正程序

王大锤要求字符串这样校正
1.三个重复的字符:AAA,则去除一个字符;
2.AABB,则去除一个B
3.AABBCC,只去除一个B,C不管
代码:

N = int(input())
str1 = []
newstr = []
for i in range(N):
    str1.append(input())
def remove1(str):
    len1 = len(str)
    a = 0
    str1 = str
    for j in range(len1-2):
        if(str[j]==str[j+1]==str[j+2]):
            str1 = str[:j]+str[j+1:]
            #print(str1)
            a = 1
    if(a == 1):
        remove1(str1)
    #elif(a == 0):
     #   newstr.append(str1)

def remove2(str):
    len1 = len(str)
    a = 0
    str1 = str
    for j in range(len1-3):
        if((str[j]==str[j+1]) and (str[j+2]==str[j+3])):
            str1 = str[:j+2]+str[j+3:]
            a = 1
            break
    for j in range(len1-2):
        if(str[j]==str[j+1]==str[j+2]):
            str1 = str[:j]+str[j+1:]
            #print(str1)
            a = 1
    if (a == 1):
        remove2(str1)
        remove1(str1)
    else:
        newstr.append(str1)


for i in range(N):
    remove2(str1[i])
    print(newstr[i])

三、发奖品

有一群人参加编程比赛,最后每个人都得到一个分数,根据分数分发奖品:
1.所有人按照一定顺序围在一起
2.如果比左边的人分高,则要比左边的人拿奖品多,右边也是
3.每个人至少一个奖品
求最少需要多少奖品?
还没完成…

你可能感兴趣的:(笔试)