Problem 4
https://projecteuler.net/problem=4
PriorityQueueを使うと速いのですが、ここでは、3桁同士の掛け算を全て配列に入れて、降順に並べて、palindromeを探します。
Vec
空の配列を作って、
let mut a: Vec<i32> = Vec::new();
追加します。
a.push(i*j);
次のようにソートすると、
a.sort()
比較関数を使うと、降順にもソートできます。
a.sort_by(|a, b| b.cmp(a));
use std::env; fn main() { let args: Vec<String> = env::args().collect(); let e: u32 = args[1].parse().unwrap(); let mut a: Vec<i32> = Vec::new(); for i in 10i32.pow(e-1)..10i32.pow(e) { for j in 10i32.pow(e-1)..(10i32.pow(e)) { a.push(i*j); } } a.sort_by(|a, b| b.cmp(a)); for n in a { if is_palindromic(n) { println!("{}", n); break; } } } fn is_palindromic(n: i32) -> bool { return n == reverse_number(n); } fn reverse_number(n: i32) -> i32 { let mut s = 0; let mut m = n; while m > 0 { let d = m%10; m = m/10; s = s*10 + d; } return s; }