我斷然沒想到面前這景象,被黑霧所包圍的眾獸,以及那輛由金角鹿所驅動的戰車。
「顯然你已經知道我是誰了吧」那個女人撫摸著金角鹿身上的皮毛
「阿爾忒彌斯,司掌狩獵和野獸的狩獵女神」我有點頭疼,居然連這種神祇都能召喚而來,那個聖杯的確是個不得了的問題
「不錯,我即是七騎之中的弓之騎士(archer)」她似乎很樂於享受這場鬧劇「你只需要回答我的乙個問題就可以繼續前行了,若不能的話,最好你有百般武藝」
「洗耳恭聽」我掏出一根雪茄點燃,想緩解一下自己
「曾有乙個牧羊人和乙個商人進行交易,但他們對交易的**爭執不下,最終他們來尋求我的智慧型。但是我並不想他們過於輕易的得到神的幫助,於是我便提出乙個規則。如果當前商人要向牧羊人購買一定數量的羊,那麼**應當等於購買這個數量的四分之一的羊的**加上購買這個數量的一半的羊的**。顯然,羊只能一整隻的賣出,而不能半隻賣出,所以當這個數量不能被分成四份或兩份,就應該下取整,這是對商人的優惠」
「這個問題最終會回到購買數量很小的情況」
「不錯,商人不買羊,就不需要支付銀幣,而如果他購買乙隻羊,那麼他需要支付一枚銀幣」她沒有停下手上的動作「無論最始的數量多大,都會回歸到一和零上面。想必你已經有了快捷計算出需要支付的金額的辦法了吧,即使沒有我也要開始提問了,若是無法回答,願君安息」
我的腦中浮現了這三個公式
f[0]
=0f[1
]=1f[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
輸入41
234輸出
1112
寫乙個暴力遞迴的程式找規律打表。
注意自帶的log2()函式當輸入的數很大是會存在誤差,例如
2^50
=1125899906842624
但是
(
int)
log2
(1125899906842623)=
50(int)
log2
(1125899906842620)=
49
#include
using
namespace std;
long
long ans[80]
=;intlog
(long
long n)
}int
main()
return0;
}
H 綿羊的銀幣
時間限制 c c 2秒,其他語言4秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 我斷然沒想到面前這景象,被黑霧所包圍的眾獸,以及那輛由金角鹿所驅動的戰車。顯然你已經知道我是誰了吧 那個女人撫摸著金角鹿身上的皮毛 阿爾忒彌斯,司掌狩獵和...
Algorithm Gossip 八枚銀幣
file name arithmetic.c creat data 2015.1.31 author zy algorithm gossip 八枚銀幣 現有八枚銀幣a,b,c,d,e,f,g,h,已知其中一枚是假幣,其重量不同於真幣,但不知是較輕或較重,如何使用天 平以最少的次數比較,決定出哪枚是假...
尋找假銀幣演算法
尋找假銀幣是乙個非常有趣的智力題目,尋找假銀幣的大意如下 現在有8 枚銀幣,其中有一枚是假幣。但是,從外觀和做工上無法分辨哪枚是真幣哪枚是假幣,只知道假幣的重量要比真幣稍輕。要求僅使用乙個天平,如何以最少的步驟尋找到假銀幣。先來分析一下尋找假銀幣問題。其實尋找假銀幣並不難,一種最基本的方法便是給硬幣...