4 9騰訊常規批第二次筆試

2021-09-17 08:05:44 字數 1695 閱讀 7629

只記得程式設計題了,前面還有25題不定項選擇

程式設計1

給你乙個從1到n的序列,你需要一直執行n次操作。每次操作先計算序列裡剩餘數字的最大公因數,把這個數字放入另乙個序列中,再從原序列選擇乙個數字刪除。

你要以怎樣的順序刪除這個序列裡的數字,才能使得到的另乙個序列裡的n個最大公因數字典序最大?

輸入描述:

乙個數字n 1<=n<=1000000

輸出描述:

n個數字,最大的公因數字典序

例項1input

3output

1 1 3

說明:把1,2,3的最大公因數1輸出,刪除1;把2,3的最大公因數1輸出,刪除2;把3的最大公因數輸出,刪除3.

輸出結果1 1 3

例項2input

2output

1 1 2 4

程式設計2

小q發現了一種特殊的陣列,叫做自增陣列。這個陣列支援一種操作:每次操作可以把陣列中的乙個數自增1.

現在有乙個長度為n的自增陣列,小q現在想利用這個操作把陣列中的每個數變得不一樣,英文最少需要多少次操作?

輸入描述:

第一行,乙個整數n(n<=10000)

第二行,n個空格間隔的整數,即陣列中的元素ai(-10000<=ai<10000)

input

51 2 3 2 5

output

2python3.5.2**

n = int(input())

num = map(int,input().split())

num = list(num)

num.sort()

num1 = num.copy()

def count(num):

n = len(num)

re = dict()

for i in range(n-1):

if num[i] == num[i+1]:

re[i+1] = num[i+1]

return re

re = count(num)

for key,value in re.items():

val = value + 1

while val in num:

val += 1

num[key] = val

sum = 0

for i in range(n):

sum = sum + (num[i]-num1[i])

print(sum)

效率如何不知道。。。。

程式設計3

小q的好朋友牛牛在紙上寫了長度為n的正整數數列。牛牛要求小q每次從數列中選取兩個數a,b,把這兩個數從數列中移除出去,然後再數列中加入a*b+1,直到只剩乙個數為止。

小q發現根據操作順序的不同,最後得到的數的大小也不一樣。小q現在想讓你幫他計算,在所有情況中能獲得的最大值減去能獲得的最小值等於多少?

輸入描述:

第一行,乙個正整數n,(1<=n<=50),表示正整數序列的長度;

在接下來的n行中,每行輸入乙個整數ai,即初始數列中的的每乙個數。保證所有資料計算結果均在64位有符號整數範圍之內。

輸出描述:

輸出乙個數,表示最大最小之差。

例項1input31

23output

2

2019 9 1騰訊第二次筆試

第三題 有n個人,每個人有兩個值ai,bi,第i個人的不滿意度為站在他前面的人的個數乘以ai 加上站在他後面的人的個數乘以bi。0 每個人的下標 n 1 給他們排好序,value i i a i n 1 i b i,使得所有value i相加最小是多少 第四題 種白花和紅花,白花必須有k的倍數個相連...

位元組跳動第二次筆試

1 和leetcode547很像,一開始可以先把滿足 3的變成1,然後就轉換成leetcode547了 2def getres n f 0 n 1 f 0 1for i in range 1 n 1 for j in range i f i f j f i 1 j return f print ge...

位元組第二次筆試題目

因為7月4號的筆試時間記錯了,遲了40分鐘,只ac了前面兩題,應該沒過 7月11號守著電腦來做的,ac了三道題,不知道能不能給機會面試,宇宙條太狠了 1.動態規劃問題 幾個人排隊,找出這個位置的人前面最近的身高高於他的人的身高 2.入棧,出棧的序列是否合法 通過乙個輔助棧吧,leetcode上面的劍...