1樓:匿名使用者
解決這個問題要考慮以下幾點:
1, n >= 0時和n < 0時。
2,如果2^n的結果過大,即是一個變數儲存不下時該怎麼辦?
3,如何快速計算出2^n,使得演算法效率提高。
解答上訴問題:
1,當n < 0時,2^n為浮點數,而浮點數對%(取模運算)無效,所以不考慮。
2,當n >= 0 時,2^n即是將正整數2(其二進位制表示為10)左移n位。
3,n太大時,左移超出變數能表達的最大值,這時該怎麼辦?
給出取模運算的性質,a ^ b % p = ((a % p)^b) % p。
那麼當n太大時,可以考慮將n拆成n1 + n2。
有2^n % p = ((2^n1 % p)^n2) %p。
這樣就能解決n過大的問題了。
我只能給你思路,希望你能自己寫出滿意的**。
2樓:潮汐之湧動
思路:一直乘上2是十分耗時的,但是用另一種方法,比方說求某個數的64次方,那麼只要某個數的32次方乘以這個數的32次方就行了,說白了就是某個數的32次方自乘,這樣只需計算一次,而不用乘上2三十二次這種耗時的計算。實現方法可用上遞迴,當然不遞迴也行。
若57,分為28與29,28可分為14自乘,29為14乘15,這時更可以設一個陣列作備忘錄,即計算28的14自乘時把14次方的結果儲進陣列裡(每計出某個次方值時都儲進去),然後下次用時先看一看陣列有沒有存,比如29裡的14乘15,因為14次的之前已經計出結果,所以直接取出,而不用再次把14分成7自乘
c++的程式超時,怎麼辦? 5
3樓:旅春冬
需要效能調優,解決方案有以下幾個:
1、最直接的是重新採用新的演算法編寫,如果是一個專案,則需要考慮架構設計的調整。
2、間接的話,使用效能監視器(計時),檢視軟體的最耗時部分,根據2-8有原則,20%的**消耗80%的時間。然後調優效能瓶頸的那段**。
一道c語言題目,我的**超時了,,,怎麼破???
4樓:磯禈嘗矙
隨輸入 同時排序, 只保留前m個結果也就是說 對n-m部分不做排序 可以簡化演算法就是, 初始陣列為空, 元素為0個前m個資料, 按順序插入到陣列中。 超過m的資料, 從後向前比較, 如果比最後一個大,直接拋棄否則插入到對應位置,拋棄當前最後一個。一道c語言題目,我的**超時了,,,怎麼破???
一道超時的c++問題,求大神提供處理方法
5樓:匿名使用者
老大,10^n在n很大的時候,比如上限100000時是個什麼概念?1後邊有10萬個0, 假設cpu的執行++的速度是10g,也就是10*10^9=10^10, 則要計算完需要10^(100000-10)秒,一年才不到4*10^7,所以在宇宙湮滅之前都不要想算完啦。
當然,按你的**還不至於老是執行不完,原因是在c*=a時當n>10時會多次溢位。
得改演算法:
注意到1+2+...+n=n(n+1)/2
當n=10^k時, n(n+1)/2= 5*10^(k-1)*(10^k+1)
以數位的形式來看: 50...050...0, 即結果中的各位上只有0和5,且5只出現兩次,並將0分割為兩半,兩半0的個數一樣,都為k-1個。
因此對本題無需計算,直接輸出即可,不過要注意當輸入的n=0時,需要輸出的是1,不滿足之前討論。
請問這道題怎麼寫謝謝,請問這道題怎麼寫
等比數列求和問題,具體請看手寫 注意記憶等比數列通項公式。請問這道題怎麼寫,謝謝 正弦型函式y asin x 是周期函式,其週期為2 對稱軸 wx k 1 2 k z 對稱中心 wx k k z 把已和條件代入到原條件中就可以了。請問這道題怎麼寫?後面的構造成斜率,你就會了。記住,遇到問題不要直接看...
請問這道題怎麼做,請問這道題怎麼做
來自貼吧 tris al 兄弟這樣不太好吧,你用某音上的題考我,是想玩死我嗎?某音無時無刻不在提醒我是一個廢物。請問這道題怎麼做?解析 要求出梯形的面積,還必須知道梯形的商。陰影部分是一個三角形,它的高也就是梯形的高 231 2 22 21 cm 所以,梯形的面積是 22 34 21 2 588 c...
請問這道題怎樣做,請問這道題怎麼做?
解 電壓源來e單獨作用時,將自電流源is置零,相 當於開路。如圖b 相當於r2與r3串聯,整體再和r1並聯,r2 r3 5 5 10 req r1 r2 r3 5 i2 e req r1 r1 r2 r3 10 5 10 10 5 5 1 a 所求電流為並聯幹路電流在r2 r3支路上的分流,可理解為...