Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
39
Task/Modular-inverse/Action-/modular-inverse.action
Normal file
39
Task/Modular-inverse/Action-/modular-inverse.action
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
INT FUNC ModInverse(INT a,b)
|
||||
INT t,nt,r,nr,q,tmp
|
||||
|
||||
IF b<0 THEN b=-b FI
|
||||
IF a<0 THEN a=b-(-a MOD b) FI
|
||||
t=0 nt=1
|
||||
r=b nr=a MOD b
|
||||
WHILE nr#0
|
||||
DO
|
||||
q=r/nr
|
||||
tmp=nt nt=t-q*nt t=tmp
|
||||
tmp=nr nr=r-q*nr r=tmp
|
||||
OD
|
||||
IF r>1 THEN
|
||||
RETURN (-1)
|
||||
FI
|
||||
IF t<0 THEN
|
||||
t==+b
|
||||
FI
|
||||
RETURN (t)
|
||||
|
||||
PROC Test(INT a,b)
|
||||
INT res
|
||||
|
||||
res=ModInverse(a,b)
|
||||
IF res>=0 THEN
|
||||
PrintF("%I MODINV %I=%I%E",a,b,res)
|
||||
ELSE
|
||||
PrintF("%I MODINV %I has no result%E",a,b)
|
||||
FI
|
||||
RETURN
|
||||
|
||||
PROC Main()
|
||||
Test(42,2017)
|
||||
Test(40,1)
|
||||
Test(52,-217)
|
||||
Test(-486,217)
|
||||
Test(40,2018)
|
||||
RETURN
|
||||
Loading…
Add table
Add a link
Reference in a new issue