Skip to content

Commit

Permalink
使用递推式线性求解乘法逆元
Browse files Browse the repository at this point in the history
  • Loading branch information
Dev-XYS committed Jan 13, 2017
1 parent 67842d9 commit 35bf590
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions Modular-Multiplicative-Inverse-Sieve(Linear).cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include <cstdio>

#define MOD 1000000007
#define MAX_ELEMENT 10000000

int rev[MAX_ELEMENT];

void sieve(int n)
{
rev[1] = 1;
for (int i = 2; i <= n; i++)
{
rev[i] = (int)(-(long long)(MOD / i) * (long long)rev[MOD % i] % (long long)MOD);
rev[i] = (rev[i] % MOD + MOD) % MOD;
}
}

int main()
{
int n;
scanf("%d", &n);
sieve(n);
for (int i = 1; i <= n; i++)
{
printf("rev(%d) = %d\n", i, rev[i]);
}
return 0;
}

0 comments on commit 35bf590

Please sign in to comment.