字节跳动笔试题
四道编程题
一、找硬币
题目:硬币有64、16、4、1这四种面值,付1024元,商品需要x元,输出找硬币的最少个数。
输入:
200
输出:
17
代码:
#include <stdio.h>
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.每个人至少一个奖品
求最少需要多少奖品?
还没完成…