add 56
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "euler56"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
rug = "1.17.0"
|
||||
@@ -0,0 +1,41 @@
|
||||
use rug::{ops::Pow, Integer};
|
||||
|
||||
fn main() {
|
||||
let mut solution = vec![];
|
||||
for a in 1..100 {
|
||||
for b in 1..100 {
|
||||
let aa = Integer::from(a);
|
||||
let result = digital_sum(aa.pow(b));
|
||||
println!("{result}");
|
||||
solution.push(result);
|
||||
}
|
||||
}
|
||||
let max = solution.into_iter().max().unwrap();
|
||||
println!("{}", max);
|
||||
}
|
||||
|
||||
fn digital_sum(int: Integer) -> u32 {
|
||||
int.to_string()
|
||||
.chars()
|
||||
.map(|c| c.to_digit(10).unwrap() as u32)
|
||||
.sum()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::digital_sum;
|
||||
use rug::ops::Pow;
|
||||
use rug::Integer;
|
||||
|
||||
#[test]
|
||||
fn test_digital_sum() {
|
||||
let result = digital_sum(Integer::from(100).pow(100));
|
||||
assert_eq!(result, 1);
|
||||
|
||||
let result = digital_sum(Integer::from(5).pow(2));
|
||||
assert_eq!(result, 7);
|
||||
|
||||
let result = digital_sum(Integer::from(6).pow(2));
|
||||
assert_eq!(result, 9);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user