21
The task is the following. Given an integer x (such that x modulo 100000000003 is not equal to 0) presented to your code in any way you find convenient, output another integer y < 100000000003 so that (x * y) mod 100000000003 = 1.
You code must take less than 30 minutes to run on a standard desktop machine for any input x such that |x| < 2^40.
Test cases
Input: 400000001. Output: 65991902837
Input: 4000000001. Output: 68181818185
Input: 2. Output: 50000000002
Input: 50000000002. Output: 2.
Input: 1000000. Output: 33333300001
Restrictions
You may not use any libraries or builtin functions that perform modulo arithmetic (or this inverse operation). This means you can't even do a % b without implementing % yourself. You can use all other non-modulo arithmetic builtin functions however.
Similar question
This is similar to this question although hopefully different enough to still be of interest.
So a-(a/b)*b is fine? – user253751 – 8 years ago
@immibis That looks fine. – None – 8 years ago
tag: restricted code? – Felipe Nardi Batista – 8 years ago
I notice you don't have any restriction that
y<100000000003. I see at least one answer that could be shortened by dropping a final modulo... – Ørjan Johansen – 8 years ago@ØrjanJohansen I was definitely expecting y<100000000003. – None – 8 years ago
1What's special about
100000000003? (just wondering) – NoOneIsHere – 8 years ago1@Lembik In that case, could you mention that requirement that y<100000000003 in the question? – isaacg – 8 years ago
@NoOneIsHere It is the first twelve-digit prime number? – Jeppe Stig Nielsen – 8 years ago
@JeppeStigNielsen It believe it is. – None – 8 years ago
Do the restrictions disallow use of python's
– bendl – 8 years agopowoperator's 3rd argument? https://docs.python.org/3.3/library/functions.html#pow@bendi Yes they do. – None – 8 years ago