You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
884 B
45 lines
884 B
12 months ago
|
struct Num {
|
||
|
n: u32,
|
||
|
digits: Vec<u8>
|
||
|
}
|
||
|
|
||
|
impl Num {
|
||
|
fn new(n: u32) -> Num {
|
||
|
let mut dsr = Vec::new();
|
||
|
let mut k = n;
|
||
|
while k != 0 {
|
||
|
let a = (k % 10) as u8;
|
||
|
k /= 10;
|
||
|
dsr.push(a);
|
||
|
}
|
||
|
dsr.reverse();
|
||
|
return Num { n, digits: dsr };
|
||
|
}
|
||
|
fn check(&self) -> bool {
|
||
|
let mut sum = 0u32;
|
||
|
for k in &self.digits {
|
||
|
let d = *k as u32;
|
||
|
sum += d * d * d * d * d;
|
||
|
}
|
||
|
return sum == self.n;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
//let n = Num::new(9474);
|
||
|
//for d in &n.digits { print!("{}", d) }
|
||
|
//println!("");
|
||
|
//println!("{}", n.check());
|
||
|
let mut sum = 0u32;
|
||
|
for i in 2..5_000_000u32 {
|
||
|
let n = Num::new(i);
|
||
|
if n.check() {
|
||
|
println!("{}", n.n);
|
||
|
sum += n.n;
|
||
|
}
|
||
|
}
|
||
|
println!("{}", sum);
|
||
|
}
|
||
|
|
||
|
|