555. McCarthy 91 函式
題目
Problem 555: McCarthy 91 function
The McCarthy 91 function is defined as follows:
We can generalize this definition by abstracting away the constants into new variables:
This way, we have .
Let be the set of fixed points of . That is,
For example, the only fixed point of is . In other words, .
Now, define as the sum of the elements in and let .For example, and .
Find .
分析
對 的幾個典型值進行簡單計算後,我們發現,
對於正整數 ,
當且僅當
時,
.
利用等差數列的求和公式,得到:
.
現在,我們令 ,再次利用等差數列的求和公式,得到:
.
最終,我們得到:
.
注意,在這個和式中,a 不是自由變數,而是 p 和 b 的函式。而且這個和式也不是無限和,求和進行到 a = 0 為止。
解答
根據以上分析,我們有以下 Haskell 程式:
main = let p = 10^6; m = p in print $ (flip div 2) $ sum $
takeWhile (>0) [(1+2*m-z)*z | b <- [1..], let z = b * (div p b - 1)]
簡要說明:
- div p b - 1 就是上面的分析中提到的 a
- z 就是 ab
這個程式的執行時間是 0.267 秒。
參考資料
相關文章
- PostgreSQL 原始碼解讀(91)- 查詢語句#76(ExecHashJoin函式#2)SQL原始碼函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 【函式式 Swift】函式式思想函式Swift
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 第7章 IF函式 COUNTIF函式 SUMIF函式函式
- 字元函式、數字函式和日期函式字元函式
- 【函式】Oracle EXTRACT()函式與to_char() 函式函式Oracle
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 【函式】ORACLE函式大全函式Oracle
- (譯) 函式式 JS #2: 函式!函式JS
- 核函式 多項式核函式 高斯核函式(常用)函式
- 函式名/函式地址/函式指標函式指標
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- main函式的入口函式AI函式
- (函式)實現strstr函式函式
- 字串函式之Strtok()函式字串函式
- SQL函式之日期函式SQL函式
- Oracle聚合函式/分析函式Oracle函式
- fork函式與vfork函式函式
- 常用函式--時間函式函式
- Day91.Servlet基本內容① -Servlet、jsp和表示式ServletJS
- 計算機程式的思維邏輯 (91) - Lambda表示式計算機
- ORACLE單行函式與多行函式之七:多行函式之分組函式示例Oracle函式
- 函式式JavaScript(4):函式柯里化函式JavaScript
- 每日導數91
- 箭頭函式、簡寫函式、普通函式的區別函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- webgl內建函式--幾何函式與矩陣函式Web函式矩陣
- webgl內建函式--向量函式與紋理查詢函式Web函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- 深入理解 函式、匿名函式、自執行匿名函式函式
- Mysql 常用函式(15)- upper 函式MySql函式
- webgl內建函式--指數函式Web函式