1. 程式人生 > 其它 >用尤拉計劃學Rust程式語言(第700題:Eulercoin)

用尤拉計劃學Rust程式語言(第700題:Eulercoin)

技術標籤:尤拉計劃Rust演算法Rust尤拉計劃

問題描述:
尤拉誕生於1707年4月15日,對於序列(1504170715041707 * n) mod 4503599627370517,如果一個元素小於前面發現的所有Eulercoin,則其稱為Eulercoin。

例如,第一個元素是1504170715041707,為第一個Eulercoin,第二個元素為3008341430083414,由於它大於1504170715041707,所以不是Eulercoin。然而,第三個元素為8912517754604,比前面的數都小,被稱為Eulercoin。前兩個Eulercoins之和是1513083232796311。

求所有Eulercoin之和。

解題過程:

第一步,先根據題意暴力求解

這個程式碼非常容易寫出來。

const INC: u64 = 1504170715041707_u64;
const MOD: u64 = 4503599627370517_u64;

let mut x = 0_u64;
let mut min = INC;
for n in 1_u64.. {
    x = (x + INC) % MOD;
    if x <= min {
        min = x;
        println!("{:20} {:20}", n, x);
    }
}

執行這個程式,可以輸出如下結果。

1     1504170715041707
                   3