有一疊 編號為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 物件導向將問題模組化,抽象出各種類,類包含資料和對資料的操作,將類例項化就得到乙個具體的物件,...