Solutions are presented as using the least memory and the fastest execution time. It also takes the top
10 most recent solutions from each language. If you want to limit to a specific index, click the
"Solved" button and go to that problem.
Problems
B"In modern cryptography much is tied to the algorithmic complexity of solving several problems. One of such problems is a discrete logarithm problem. It is formulated as follows: It is most likely that modern mankind cannot solve the problem of discrete logarithm for a sufficiently large field size. For example, for a field of residues modulo prime number, primes of 1024 or 2048 bits are considered to be safe. However, calculations with such large numbers can place a significant load on servers that perform cryptographic operations. For this reason, instead of a simple module residue field, more complex fields are often used. For such field no fast algorithms that use a field structure are known, smaller fields can be used and operations can be properly optimized. Developer Nikolai does not trust the generally accepted methods, so he wants to invent his own. Recently, he read about a very strange field -- nimbers, and thinks it's a great fit for the purpose. The field of nimbers is defined on a set of integers from 0 to 2^{2^k} - 1 for some positive integer k . Bitwise exclusive or ( oplus ) operation is used as addition. One of ways to define multiplication operation ( odot ) is following properties: For example: Formally, this algorithm can be described by following pseudo-code. It can be shown, that this operations really forms a field. Moreover, than can make sense as game theory operations, but that's not related to problem much. With the help of appropriate caching and grouping of operations, it is possible to calculate the product quickly enough, which is important to improve speed of the cryptoalgorithm. More formal definitions as well as additional properties can be clarified in the wikipedia article at link. The authors of the task hope that the properties listed in the statement should be enough for the solution. Powering for such muliplication is defined in same way, formally a^{ odot k} = underbrace{a odot a "... |
Tutorials
Submissions
Submission Id |
Author(s) |
Index |
Submitted |
Verdict |
Language |
Test Set |
Tests Passed |
Time taken (ms) |
Memory Consumed (bytes) |
Tags |
Rating |
71915774 |
little_misfortune |
F |
Feb. 26, 2020, 1:14 p.m. |
OK |
GNU C++17 |
TESTS |
32 |
468 |
33996800 |
|
3300 |
71868117 |
ftiasch |
F |
Feb. 25, 2020, 3:24 p.m. |
OK |
GNU C++17 |
TESTS |
32 |
888 |
1433600 |
|
3300 |
71944474 |
the_art_of_war |
F |
Feb. 27, 2020, 12:36 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1122 |
409600 |
|
3300 |
71944603 |
the_art_of_war |
F |
Feb. 27, 2020, 12:42 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1138 |
409600 |
|
3300 |
71944581 |
the_art_of_war |
F |
Feb. 27, 2020, 12:41 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1185 |
409600 |
|
3300 |
71944586 |
the_art_of_war |
F |
Feb. 27, 2020, 12:41 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1201 |
409600 |
|
3300 |
71944537 |
the_art_of_war |
F |
Feb. 27, 2020, 12:39 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1201 |
409600 |
|
3300 |
71730779 |
Petr |
F |
Feb. 23, 2020, 7:59 p.m. |
OK |
GNU C++17 |
TESTS |
32 |
1575 |
1126400 |
|
3300 |
71944565 |
the_art_of_war |
F |
Feb. 27, 2020, 12:40 a.m. |
OK |
GNU C++17 |
TESTS |
32 |
1591 |
4505600 |
|
3300 |
71727149 |
tourist |
F |
Feb. 23, 2020, 6:33 p.m. |
OK |
GNU C++17 |
TESTS |
32 |
2106 |
4300800 |
|
3300 |
71723497 |
eatmore |
F |
Feb. 23, 2020, 6:09 p.m. |
OK |
Java 11 |
TESTS |
32 |
1840 |
33484800 |
|
3300 |
remove filters
Back to search problems