用尤拉計劃學Rust程式語言(第700題:Eulercoin)
阿新 • • 發佈:2021-02-06
問題描述:
尤拉誕生於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