大学入試の数学問題をRustで求めてみる

大学入試で、東京理科大学で出た数学の問題ということです。
今の私にも考えれば出来るかなって思った問題でしたが、やっぱり分かりませんでした(涙)
ちょっと面白そうな問題だったので、今勉強中の
Rustで答えを出してみました。
数学的なコードではないですが、動画の答えと合いました。手計算では求めることが出来ませんでしたが、プログラムでは合ってたので良かった。
因みに最後にお伝えいたしますが、動画の先生と同じく、東京理科大学(物理科)は私の出身大学です。
以上になります
【問題】
ある2桁の正の整数mを2乗すると、下2桁が36になる時、mの値は?という問題です。
数学的なコードではないですが、動画の答えと合いました。手計算では求めることが出来ませんでしたが、プログラムでは合ってたので良かった。
use std::collections::HashMap; fn question(x: u64) -> u64 { let x_times; let under2keta: u64; let fix_num = 100; // 下2桁を00にするための変数 // (条件)二乗する x_times = x.pow(2); // 文字列に変換してから後ろ2文字を取得しようと思ったが止めた // let x2_str: String = x_times.to_string(); // 下2桁を取得 // 512 -> 500, 1024 -> 1000 のような数値にする処理(下2桁を00へ変換) let x_roundup = (x_times / fix_num) * fix_num as u64; // 小数以下を切り捨てて、桁を元に戻す under2keta = x_times - x_roundup; // Ex) 72 = 572 - 500 こんな感じで下2桁が返るはず return under2keta } fn main() { let target_number = 36; // (条件)下2桁がこの数値となるmを求める // ある2桁の整数 [0..99]とかしたほうがいいのかも let mut i = 10; let max_i = 99; // let mut ans = vec![]; // (配列の場合) let mut ans = HashMap::new(); // 辞書型使う loop { let rtn = question(i); // ループの中でmutはなくても、同じ変数名は使えるようだ if rtn == target_number { // ans.push(i); // i^2の下2桁が36に等しかったらiを退避(配列の場合) ans.insert(i, i.pow(2)); // i^2の下2桁が36に等しかったらiを退避 } if i > max_i { break; } i += 1; } // println!("Ans. is {:?}.", ans); // (配列の場合) for (k, v) in &ans { println!("{} -> {}", k, v); } }私はパソコン使って答え出せますが、受験生は自分の頭1つで、しかも時間内に解かないといけないから大変ですね。
因みに最後にお伝えいたしますが、動画の先生と同じく、東京理科大学(物理科)は私の出身大学です。
以上になります