貝殼找房 丟失的卡片

2021-09-26 02:08:49 字數 2812 閱讀 4844

有一疊 編號為1~n的卡片。

吹落了一張。輸入剩餘n-1張卡編號中0~9出現的次數。(次數不大於300)

輸出卡片數目n和吹落卡片的編號。

如果吹落卡片的解不唯一,從小到大排

輸入樣例:

2 12 9 3 3 3 3 2 2 2

輸出樣例:

26 12

26 21

晚上又寫了一段**。

基本思路是:

0. check了0-9出現次數不大於300的最大的數是999.

從n=1開始計數0~n**現0-9的次數,返回乙個list,叫check

比較check和輸入nums,check中的每個元素都不小於nums中對應位置元素時,說明當前n已經達到卡片數。

然後逐位對比check和nums,找出掉落卡片編號的各個位的值

各個位的值組合成卡片編號。

如果check和nums完全相同。。似乎掉的是最後一張卡

存在三個大問題:

對於比較大的用力,比如**中的nums,懷疑執行時間可能會超時。

最後返回的結果是目前丟失卡片上的各個數,其可能的組合值可能是1位數, 兩位數,3位數。3位數的組合比較複雜。。沒有寫。直接輸出了乙個list

其他bug待排查

# 計算1~n中0-9出現的次數,返回乙個list res

defdigitcounts2

(n):

res =

for k in

range(0

,10):

int(

''.join(

map(

str,

range(1

,n+1))

).count(

str(k)))

)return res

print

(digitcounts2(

999)

)#digitccounts2()的測試用例

#nums = list(map(int,input().split())) # 接受輸入

nums =

[188

,299

,299

,300

,300

,300

,300

,300

,300

,300

]# 當前測試用例

check =

# 0~n的0-9出現次數儲存list

n =1

while

true

: check = digitcounts2(n)

print

('當前的n為:'

+str

(n))

print

(check)

print

(nums)

flag =

0# flag為0退出迴圈,則說明n已經符合條件,flag=1退出迴圈,則n還不夠大

for i in

range(10

):if check[i]

>= nums[i]

:continue

else

: flag =

1break

print

('flag:'

+str

(flag)

)if flag ==1:

# n不夠

n +=

1else

:#n夠了

print

('最終的n為:'

)print

(n)break

dif =

# 記錄nums與check相比的缺失位

for i in

range(10

):item = check[i]

- nums[i]

for i in

range

(item)

:# item = 0 / 1 /2 /3

if dif==

:print

('掉了最後一張卡片:'

)print

(n+1

)else:if

len(dif)==1

:#掉的卡片編號是一位數

print

(dif[0]

)elif

len(dif)==2

:#掉的卡片編號是兩位數

if dif[0]

==0:print

(dif[1]

*10+dif[0]

)elif dif[1]

==0:print

(dif[0]

*10+dif[1]

)elif dif[1]

== dif[0]

:print

(dif[0]

*10+dif[1]

)else

:if dif[0]

*10+dif[1]

*10+dif[0]

:print

(str

(dif[0]

*10+dif[1]

),str(dif[1]

*10+dif[0]

))else

:print

(str

(dif[1]

*10+dif[0]

),str(dif[0]

*10+dif[1]

))else

:print

(dif)

# 三位數。。。emmm組合沒寫

貝殼找房算數(中等)

描述 輸入格式 一行兩個正整數,分別表示 n和k。保證1 n 1e6,1 k 1e18。輸出格式 乙個整數表示答案。樣例輸入 9 5樣例輸出 思路對於數字積相同的可以只算一次,用map存起來個數,這樣就可以將複雜度壓下來了。include pragma warning disable 4786 de...

計蒜客(貝殼找房均價計算)

貝殼找房每個月都會計算各個城市房價的均價,計算的最後一步為 將乙個形如 x.yx.y 的小數,用特殊近似法近似到整數。計算完成後會將這個均價展示在首頁供使用者參考。特殊近似法定義為 從最右邊開始四捨五入到整數為止。比如 4.445 rightarrow4.45 rightarrow4.5 right...

貝殼找房面試之c 基礎問答

1.設計模式了解嗎?2.c 物件導向的方式 面向過程的程式設計思路是,解決乙個問題分別幾個步驟,使用函式來完成各個步驟的任務,不同函式具有不同的功能,按照程式執行的順序呼叫函式,組成乙個可以執行的程式。c 物件導向將問題模組化,抽象出各種類,類包含資料和對資料的操作,將類例項化就得到乙個具體的物件,...