H 綿羊的銀幣

2021-10-01 10:30:47 字數 1234 閱讀 7330

時間限制:c/c++ 2秒,其他語言4秒

空間限制:c/c++ 131072k,其他語言262144k

64bit io format: %lld

題目描述

我斷然沒想到面前這景象,被黑霧所包圍的眾獸,以及那輛由金角鹿所驅動的戰車。

「顯然你已經知道我是誰了吧」那個女人撫摸著金角鹿身上的皮毛

「阿爾忒彌斯,司掌狩獵和野獸的狩獵女神」我有點頭疼,居然連這種神祇都能召喚而來,那個聖杯的確是個不得了的問題

「不錯,我即是七騎之中的弓之騎士(archer)」她似乎很樂於享受這場鬧劇「你只需要回答我的乙個問題就可以繼續前行了,若不能的話,最好你有百般武藝」

「洗耳恭聽」我掏出一根雪茄點燃,想緩解一下自己

「曾有乙個牧羊人和乙個商人進行交易,但他們對交易的**爭執不下,最終他們來尋求我的智慧型。但是我並不想他們過於輕易的得到神的幫助,於是我便提出乙個規則。如果當前商人要向牧羊人購買一定數量的羊,那麼**應當等於購買這個數量的四分之一的羊的**加上購買這個數量的一半的羊的**。顯然,羊只能一整隻的賣出,而不能半隻賣出,所以當這個數量不能被分成四份或兩份,就應該下取整,這是對商人的優惠」

「這個問題最終會回到購買數量很小的情況」

「不錯,商人不買羊,就不需要支付銀幣,而如果他購買乙隻羊,那麼他需要支付一枚銀幣」她沒有停下手上的動作「無論最始的數量多大,都會回歸到一和零上面。想必你已經有了快捷計算出需要支付的金額的辦法了吧,即使沒有我也要開始提問了,若是無法回答,願君安息」

我的腦中浮現了這三個公式

f[0] = 0

f[1] = 1

f[n] = f[n/2] + f[n/4] (n>=2)

輸入描述:

第一行乙個整數t ( 1 <= t <= 250000 ) ,表示t次詢問。

下面t行,每行乙個整數n ( 0 <= n <= 1018 ) ,表示當前需要購買多少只綿羊

由於輸入輸出過多,請使用scanf和printf,否則容易超時

n極大,log2(n)精度不夠,請不要使用的任何log函式,否則容易wrong answer

輸出描述:

對於每個詢問,輸出需要支付的銀幣數量

示例1輸入複製4

1234

輸出複製11

12本題若用遞迴,則會超時。

將該函式的前十六列出可發現f(0)=0;f(1)到f(3)為1;f(4)到f(7)為2;f(8)到f(15)為3;f(16)為5。由此可以發現在2的n次方時發生改變。因為在2的n次方時這個數的二進位制數為10的n次方

綿羊的銀幣

我斷然沒想到面前這景象,被黑霧所包圍的眾獸,以及那輛由金角鹿所驅動的戰車。顯然你已經知道我是誰了吧 那個女人撫摸著金角鹿身上的皮毛 阿爾忒彌斯,司掌狩獵和野獸的狩獵女神 我有點頭疼,居然連這種神祇都能召喚而來,那個聖杯的確是個不得了的問題 不錯,我即是七騎之中的弓之騎士 archer 她似乎很樂於享...

GDOI2004 可憐的綿羊

給出乙個凸包,讓你求乙個不包含一些點的新凸包,用原來凸包上的點。新的凸包可以割成若干個三角形,三角形內部一定不包含那些點,所以外部的點一定等於總點數。我們可以求出一條線一邊所含點的個數,可是這有交集。考慮到新凸包上的點是原凸包的子集,交集一定在原凸包外。我們就可以n 2預處理出那些點在凸包內,n 3...

帶 h的和不帶 h的

新的c 標準中,生成新標頭檔案的方法僅僅是將現有c 頭檔名中的 h 去掉。例如,變成了,變成了,等等。對於c標頭檔案,採用同樣的方法,但在每個名字前還要新增乙個c。所以c的變成了,變成了,等等。舊的c 標頭檔案是官方所反對使用的 即,明確列出不再支援 但舊的c標頭檔案則沒有 以保持對c的相容性 下面...