騰訊歷屆筆試題(2)

2021-10-19 21:08:53 字數 695 閱讀 3419

小q十分富有,擁有非常多的硬幣,小q擁有的硬幣是有規律的,對於所有的非負整數k,小q恰好各有兩個面值為2^k的硬幣,所以小q擁有的硬幣就是1,1,2,2,4,4,8,8,…。小q有一天去商店購買東西需要支付n元錢,小q想知道有多少種方案從他擁有的硬幣中選取一些拼湊起來恰好是n元(如果兩種方案某個面值的硬幣選取的個數不一樣就考慮為不一樣的方案)。 

輸入包括乙個整數n(1≤n≤10^18),表示小q需要支付多少錢。注意n的範圍。
輸出乙個整數,表示小q可以拼湊出n元錢放的方案數。
示例1

6
3
思路:我們將n分為奇偶兩種情況討論該題:

1⃣️當n為奇數時,說明一定會需要乙個1,並且另乙個1永遠不會使用,剩下的只能使用2,4,8.。。我們可以將2,4,8看作1,2,4.。。此時問題已經能夠轉化為子問題了,即f[n]=f[n/2].

2⃣️當n為偶數時,此時仍需分兩種情況,使用1和不使用1,當使用兩個1時,後面仍然可以用2,4,8.。。。或者直接使用2,4,8.。。。即f[n]=f[n/2]+f[n/2-1].

#include#include#includeusing namespace std;

#define ll long long

mapmp;

ll dfs(ll n)

int main(void)

騰訊筆試題

一.單選題 每題4 分,15題,共60分 1.考慮函式原型void hello int a,int b 7,char pszc 下面的函式呼叫鐘,屬於不合法呼叫的是 a hello 5 b.hello 5,8 c.hello 6,d.hello 0,0,2.下面有關過載函式的說法中正確的是 a.過載...

騰訊筆試題

1 請定義乙個巨集,比較兩個數a b的大小,不能使用大於 小於 if語句 2 如何輸出原始檔的標題和目前執行行的行數 3 兩個數相乘,小數點後位數沒有限制,請寫乙個高精度演算法 4 寫乙個病毒 5 有a b c d 四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手...

騰訊筆試題

const的含義及實現機制,比如 const int i,是怎麼做到i只可讀的?const用來說明所定義的變數是唯讀的。這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用。初探編譯器static const之實現原理 到商店裡買200的商品返還100優惠券 可以在本商店代替現金 請問實際...