First unscrupulous propaganda about the blog wwwwww

Article list - nuclear fusion reactor core - Luo Gubo off

## Multiplicative inverse:

For a modulus \ (p \) and a divisor \ (the X-\) , you can often find a special number \ (the y-\) ,

the \ (\ div x \) instead \ (\ the y-Times \) , you can instead.The number \ (the y-\) , called \ (x \) of "inverse", denoted by \ (inv (the X-) \) .

Example:

\ (. 3 \ div. 3 \ 4 Times (\ MOD. 11) \)

\ (=. 3 \ 4 Times \ 4 Times (\ MOD. 11) \)

\ (= 4 \)

wherein \ (4 \) is the modulus \ (11 \) when \ (3 \) of the inverse element.By definition the example, is easy to see the relationship between the inverse number of the original:

\ (\ Large X \ INV Times (X) \ equiv. 1 (\ MOD P) \)

## Solving the inverse mode:

P3811 [template] multiplicative inverse

##### There \ (4 \) methods can be determined **inverse mode**

**According to**the extended Euclid:#### Modulus may not be a prime number

\ (x \ times inv (x ) \ equiv 1 (\ mod p) \) where \ (x, p \) are known.

There are not very familiar?

This is a

unknowns \ (inv (the X-) \) , the right side of the equation \ (c = 1 \) congruence equation,Seeking \ (inv (x) \) values, solving this equation can be congruent.

About

**Extended Euclid**and**Solution of a congruence equation**,

see: Euclid and Euclid expansion - nuclear fusion reactor core - Luo Gubo off

**According to**Fermat's little theorem:#### only applies to the case of modulo a prime number

The Fermat's little theorem:

\ (\ Large X-P. 1 ^ {} \ equiv. 1 \ P PMOD \)**So it is:**$ {X ^}. 1-P \ equiv X \ INV Times (X) \ P $ PMODIn addition both sides of the equation with x,

**there are:**\ (INV (X) \ equiv P-X ^ {2} \ PMOD P \)After I can find by flash power, determined \ ((x ^ {p- 2}) \% p \) values

can be obtained directly \ (inv (x) \) values

**Recursive method**:#### This applies only in modulo of a prime number

If you want the solution of inverse mode number, lot number, but continuous, then how to do?

You can use the recursive method.

\ (i \) mode \ (p \) inverse in the sense of yuan \ (inv (i) \) can be expressed as:

\(\large inv(i) = -\lfloor \frac{p}{i}\rfloor \times inv(p\% i)\% p\)

###### prove:

**设**$p=k\times i + r $ , \((k,r \in Z)\)**Because:**\ (the p-\ equiv 0 (\ the p-MOD) \) ,**则 :**\((k\times i + r) \equiv 0 (\mod p)\)So that both sides of the equation by the same: \ (INV (I) \ Times INV (R & lt) \) ,

Depending on the nature of the inverse,

**then:**\((inv(i) \times i )\% p=1\) ， \((inv(r) \times r )\% p=1\) ;

**Original equation becomes:**\(k \times 1 \times inv(r) + 1\times inv(i) \equiv 0 (\mod p)\)

\(inv(i) \equiv -k\times inv(r)\)

**And because:**$ P = K \ I + R & lt Times $**Original equation becomes:**\ (INV (I) \ equiv - \ lfloor \ FRAC {P} I {} \ rfloor \ Times INV (P \ I%) (\ MOD P) \)**即 ：**\(inv(i) = -\lfloor \frac{p}{i}\rfloor \times inv(p\% i) \% p\)And because: \ ((the p-\% i) <i \) ,

**Then:**\ (INV (P \% I) \) in obtaining \ (inv (i) \) already before the request may be made recursive**Original style proved.**Obviously, obtained \ (inv (i) \) is not necessarily the smallest integer solution to

To obtain the smallest positive integer solution, we need to add this step operation:

So \ (- \ lfloor \ frac { p} {i} \ rfloor \) to add a \ (P \) , then its off mode.

即 : \(inv(i) = (p - \lfloor \frac{p}{i}\rfloor)\times inv(p \% i) \% p;\)

**Inverse factorial method:**#### only applies to the case of modulo a prime number

设 \(f(i)=inv(i!)\) , $ g(i)=i! $

**则：**\(f(i-1) = f(i)\times i\)###### prove:

\(f(i-1)=\frac{1}{\ (i-1)\ !}=\frac{1}{i\ !}\times i =f(i)\times i\)

Suppose requires \ ([1, n] \ ) in all of the number of inverse

To obtain \ ([1, n] \ ) factorial the number of all

Then Fermat's Little Theorem to obtain \ (f (n) \) values

After delivery to launch \ (f (1 \ sim n ) \) values

But \ (inv (1! \ Sim n!) \) Is not what we want answers

The need to continue the conversion.

Kachi: (! I) $ inv (i) = inv \ times (i-1) $!

###### Proof:

\(inv(i)=\frac{1}{i}=\frac{1}{i\ !}\times (i-1)\ ! = inv(i!)\times (i-1)!\)

Conversion as described above,

can be obtained:\(inv(i)=f(i)\times (i-1)!\)

That was the answer.

## Return to this topic

Look at a range Data:

\ (. 1 \ n-leqslant \ leqslant. 3 \. 6 Times 10 ^ \) , \ (n-<P <20,000,528 \)

input guaranteed \ (P \) is a prime number.

Obviously, the **expansion of Europe and France** and **fast power method** are card.

Due to the continuous section, and modulus \ (P \) is a prime,

can be **linear recursion**

Mentioned above principle is very clear.

code show as below:

### **recursive method** :

```
#include<cstdio>
using namespace std;
long long n,p;
long long ans[5000010]={0,1};
int main()
{
scanf("%lld%lld",&n,&p);
printf("1\n");
for(long long i=2;i<=n;i++) //线性递推
{
ans[i]=(long long)(p-p/i)*ans[p%i]%p;
printf("%lld\n",ans[i]);
}
}
```

### **factorial inverse method:**

```
#include<cstdio>
#define ll long long
using namespace std;
ll mul(ll a,ll b,ll mod) //快速幂模板
{
ll ans=1;
while(b)
{
if(b&1) ans=ans*a%mod;
a=(a*a)%mod;
b>>=1;
}
return ans%mod;
}
ll n,p;
ll c[5000010]={1};
ll f[5000010];
int main()
{
scanf("%lld%lld",&n,&p);
for(int i=1;i<=n;i++)
c[i]=(c[i-1]*i)%p;
f[n]=mul(c[n],p-2,p); //获得inv(n!)
for(int i=n-1;i>=1;i--) //递推阶乘的逆元
f[i]=(f[i+1]*(i+1))%p;
for(int j=1;j<=n;j++) //转化并输出
printf("%lld\n",(f[j]*c[j-1])%p);
}
```