recursive inverse

three lines of code

inv[1] = 1;
for (int i = 2; i<MAXN; i++)

inv [i] = inv [MOD% i] * (MOD-MOD / i)% MOD;

Just to demonstrate the feasibility:

  • Just prove: inv[i]*i=1mod MOD
  • 可 证: inv [MOD% i] * (MOD-MOD / i)% MOD * i = 1 mod MOD
  • Let MOD = i*k+b;
  • 左边 = inv [MOD% i] * (MOD% i) (MOD * i-MOD)% MOD / (MOD% i) mod MOD
  •        = (MOD-MOD / i) * i% MOD / (MOD% i) mod MOD
  •        = (MOD-k) * in% MOD / b against MOD
  •        = (MOD * i + (b-MOD))% MOD / b mod MOD
  •        = b / b% MOD mod MOD 
  •        = 1 mod MOD
  • certified
 
 
 
 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325751164&siteId=291194637