oppgaver så langt
This commit is contained in:
parent
4f3385850f
commit
df84d4f18e
17 changed files with 628 additions and 0 deletions
6
sqrtx-69/Cargo.toml
Normal file
6
sqrtx-69/Cargo.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[package]
|
||||
name = "sqrtx-69"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
60
sqrtx-69/src/main.rs
Normal file
60
sqrtx-69/src/main.rs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
// fn my_sqrt(x: i32) -> i32 {
|
||||
// let mut upper_range = x / 2;
|
||||
// let mut last_i = 0;
|
||||
|
||||
// if x <= 5 {
|
||||
// upper_range = x;
|
||||
// }
|
||||
|
||||
// if x >= i32::MAX {
|
||||
// return (i32::MAX as f64).sqrt().floor() as i32;
|
||||
// }
|
||||
|
||||
// for i in 0..=upper_range {
|
||||
// let power_of_2 = i * i;
|
||||
|
||||
// if power_of_2 == x {
|
||||
// return i;
|
||||
// } else if power_of_2 > x {
|
||||
// return last_i;
|
||||
// } else {
|
||||
// last_i = i;
|
||||
// }
|
||||
// }
|
||||
// 0
|
||||
// }
|
||||
|
||||
fn my_sqrt(x: i32) -> i32 {
|
||||
if x < 2 {
|
||||
return x; // Early return for 0 and 1
|
||||
}
|
||||
|
||||
let mut right = 46340.min(x / 2);
|
||||
|
||||
if x >= right * right {
|
||||
return right;
|
||||
}
|
||||
|
||||
let mut left = 2;
|
||||
|
||||
while left <= right {
|
||||
let mid = left + (right - left) / 2;
|
||||
let mid_squared = mid * mid;
|
||||
|
||||
if mid_squared == x {
|
||||
return mid;
|
||||
} else if mid_squared < x {
|
||||
left = mid + 1;
|
||||
} else {
|
||||
right = mid - 1;
|
||||
}
|
||||
}
|
||||
|
||||
right // After the loop, `right` is the largest value whose square is <= x}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// let sol = my_sqrt(2147483647);
|
||||
let sol = my_sqrt(2147395599);
|
||||
println!("{}", sol);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue