常說的一句話就是:「是騾子是馬拉出來溜溜」,演算法課上學習了素數測試的演算法,可是在實踐中當兩個大數相乘的時候就會出現溢位的現象,上演算法實驗課的時候,一道題目就是要測試素數,其中有乙個2^31此方級的梅森素數,如果按原來的直接相乘然後取模的方法就會出現溢位,怎麼都不能通過,這道題目上卡了我半天(雖然我有差不過一年的程式設計競賽的基礎),最後還是我們系的acm強人提供了下面的方法,改了之後才通過那道題的。
static long long mod(long long x,long long y,long long n)
看看,其實想法很簡單,就是保證將大數降冪,然後在還原回去並取模。然後又在網上搜了一下模冪運算的優化方法,才發現以前的想法是多麼的弱智,原來模冪運算可以從時間和空間上去的很多的優化的,哎,程式設計方面的技巧是非常的多的,如果沒有實踐的經驗,臨時去想出一道題目的解法是很困難的。很多時候,當你面對乙個問題的時候,乙個解題的層次是,我去搜搜,然後看到別人怎麼做的,學著掌握這種方法,在看到同樣的問題的時候,就可以很快的解決出來了,這種層次不是我羨慕的,這是你不會僅僅是因為你沒有見過,但是有一種更高深的層次就是,在面對乙個題目的時候,去分析這個問題的性質,然後去建立乙個數學模型,提出該模型的性質,然後利用這些性質去解決問題,這個層次的人是相當可怕的。正所謂「只在此山中,雲深不知處啊」
快速冪(冪運算取模的logn演算法)
以下以求a的b次方來介紹 把b轉換成二進位制數 該二進位制數第i位的權為 例如11的二進位制是1011 11 2 1 2 0 2 1 2 1 因此,我們將a 轉化為算 對於 令a 0 a 2 0 1 a 1 a 2 1 1 a 2 a 2 2 0 a 3 a 2 3 1 可以看出a n 的前半部分是...
做雲計算的PaaS太懸了
雲計算基本上包括spi saas,paas和iaas 三大部分組成。ipbaobao 了解到,國內一些中小公司和大學,甚至只有 幾個人的團隊,就忽悠著做 platform as a service,做webos 因為雲計算很熱鬧,saas種類 太多做不成,做 iaas又 沒資源,所以選擇了 paas...
用數論的知識解決模冪運算
在數學上,如果數a與數b對m取模後得到的值相等,即a m b m,則稱a與b是關於模m同餘,記為a b。此外對於同餘運算有如下定理 自己推導的話也可以輕易得證 1 若a b,則存在常數d,使得a d b d 2 若a b,則存在常數d,使得a d b d 3 若a b,則存在常數n,使得a n b ...