べき剰余をオーバーフローさせずに作る関数を作ったヽ(´ー`)ノ

fn calc(num: usize, pow: usize, m: usize) -> usize {
 let mut bit: usize = 1;
 let mut res: usize = 1;
 let mut tmp_pow: usize = num;

 while pow >= bit {
  if pow & bit > 0 {
   res = (res * tmp_pow) % m;
  }
  bit = bit << 1;
  tmp_pow = (tmp_pow * tmp_pow) % m;
 }
 res
}