fn my_sqrt(n: i64) -> i64 {
if n == 0 || n == 1 {
return n;
}
let mut start = 1;
let mut end = n;
while start <= end {
let mid = start + (end - start) / 2;
let mid_sq = (mid as i128) * (mid as i128);
if mid_sq > n as i128 {
end = mid - 1;
} else if mid_sq == n as i128 {
return mid;
} else {
start = mid + 1;
}
}
end
}
fn main() {
println!("{}", my_sqrt(240000));
}
/*
run:
489
*/