<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Van Vinh Dang</string-name>
          <email>dangvvinh@hcmut.edu.vn</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nataliya Dodonova</string-name>
          <email>ndodonova@bk.ru</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Svetlana Korabelshchikova</string-name>
          <email>s.korabelsschikova@narfu.ru</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikhail Dodonov</string-name>
          <email>dodonoff@mail.ru</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Hochiminh city University of, Technology</institution>
          ,
          <addr-line>Hochiminh city</addr-line>
          ,
          <country country="VN">Vietnam</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Northern (Arctic) Federal University</institution>
          ,
          <addr-line>named after M.V. Lomonosov, Arkhangelsk</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Samara National Research University</institution>
          ,
          <addr-line>Samara</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>75</fpage>
      <lpage>79</lpage>
      <abstract>
        <p>-In general, we formulate the problem of extracting n-th order roots from a language as follows: for a given language A and a given nN it is required to find all the languages B, such that A = Bn. This theoretical problem is closely related to the practical task of decoding messages, where it is necessary to find a partition of the encoded message into elementary codes that correspond to certain characters of the original alphabet. We previously found a solution to the problem of extracting n-th order roots for languages of a special kind, which is containing all the possible words of the length from nn1 to nn2 (n1  n2). We reduced the problem under consideration to a knapsack problem and solved it by the method of software implementation of the algorithms proposed in the article. We found out that the number of roots depends on the values of n and k, where k is the cardinal number of the set {n1, n1+1,..., n2}. We obtained quantitative estimates of the number of n-th power roots for different values of n and k. For n = 2, the sequence of the number of square roots from the language coincid with the sequence published on the website of the online encyclopedia of integer sequences http://oeis.org/ A191701. In binary lunar arithmetic, this sequence is the number of binary numbers x of length k such that x2 has no zeros. In the article, we established and theoretically proved the correspondence between operations in binary lunar arithmetic and in the ring of polynomials with integer coefficients. Based on the established correspondence, we developed algorithms that allows us to solve both the special problem of finding roots from a language and the more general knapsack problem using operations in binary lunar arithmetic. We compared the software implementation of the proposed algorithm with the well-known classical alternative solutions to the knapsack problem. Using the discrete Fourier transform, we were able to improve the asymptotic complexity of the original algorithm.</p>
      </abstract>
      <kwd-group>
        <kwd>dismal arithmetic</kwd>
        <kwd>binary lunar arithmetic</kwd>
        <kwd>knapsack problem</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>American scientists D. Applegate, M. Lebrun, and N. J.
A. Sloane introduced the concept of “lunar arithmetic” in [1],
and originally they used the term “dismal arithmetic”,
subsequently replacing it with a less pessimistic “lunar
arithmetic”.</p>
      <p>In the so-called lunar arithmetic, we replace the addition
and multiplication of numbers by the operations of
calculating the maximum and minimum, respectively. For
example, 2 + 7 = 7, and 27=2. With multi-digit numbers, the
addition operation is performed by columns, i.e., a maximum
is selected in each column. For instance 6179 + 348 = 6379.
The rule for multiplication of two multi-digit numbers is that
the first number multiplies every digit of the second number
and then the results are added together, i.e., we select the
maximum in each digit (column):
3
3</p>
      <p>X</p>
      <p>You can learn more about the features of lunar arithmetic
in [1]. We are most interested in the binary case when
operations on numbers are performed according to the rules
formulated above, but the numbers belong to the set {0, 1}.</p>
      <p>
        In the past, in [
        <xref ref-type="bibr" rid="ref2">2, 3</xref>
        ], we considered the problem of
extracting all the roots from special kind of languages. In
general, the problem of extracting the n-th root from a
language can be formulated as follows: for a given language
A and given nN, it is required to find all languages B such
that A = Bn. In this case, we call the language В the n-th root
of the language А. This theoretical problem is closely related
to the practical problem of decoding messages, where it is
necessary to find the division of the encoded message into
elementary codes corresponding to the characters of the
original alphabet.
      </p>
      <p>Let us introduce the necessary notations. Let М be a finite
subset of the set of natural numbers, let  - be an alphabet,
possibly infinite. We consider languages of the form (М)
containing all the i-digit long words over the alphabet ,
where iМ. We call the set М, defining the language (М),
the set of indices. The solution to the problem of extracting
all the roots was obtained for languages А=[t1;t2],
containing all the words of length from t1 to t2 (t1 t2). Let us
show two examples.</p>
      <p>Example 1. Let  be an arbitrary alphabet. We can
extract 5 square roots from the language А=[2;14] with sets
of indices {1, 2, 3, 4, 5, 6, 7}, {1, 2, 3, 4, 6, 7}, {1, 2, 4, 5, 6,
7}, {1, 2, 4, 6, 7} and {1, 2, 3, 5, 6, 7}.</p>
      <p>Let’s consider, for example, the language B=(М), where
М={1, 2, 4, 6, 7}. We can show, that B2=A. The
multiplicative operation here is concatenation. Since
language B contains all 1-digit long words, language В2
contains concatenations of 1-digit long words, that is, all
2digit long words. Similarly, language В2 contains all words of
length 4, 8, 12, and 14. We can get all the 3-digit long words
by concatenating words of length 1 and 2 (1, 2М), we can
get all the 5-digit long words by concatenating words of
length 1 and 4 (1, 4М), and so on for the remaining natural
numbers from the interval [2, 14].</p>
      <p>Example 2.</p>
      <p>Let us find all the cube roots from the language
А=[27;42].</p>
      <p>Obviously, the set M1={9, 10, 11, 12, 13, 14} defines a
cubic root В=[9;14] from А. Similarly to the example 1, we
can verify that the set М2 = {9, 10, 13, 14} defines another
cube root from the language А. Therefore, the roots will be
also two other languages with sets of indices
M3={9, 10, 11, 13, 14} and M4={9, 10, 12, 13, 14}.</p>
      <p>In general, the n–th root from the language А=[t1;t2] is
extracted successfully if and only if t1 and t2 are divisible by
n. Let M be a subset of the set of natural numbers
{n1, n1 + 1, …, n2}, where n1=t1/n, n2=t2/n. The language
B=(М), containing all words of length aj, ajМ, is an n‒th
root from the language А if and only if the condition is
satisfied:
+
(i) (n  n1  i  n  n2  i = a1 + a2 + … + an), (1)
where a1, a2, …, an are some elements from М (not
necessarily different).</p>
      <p>The task of checking condition (1) is equivalent to the
specific case of the unlimited knapsack problem. We can
solve this problem by the method of dynamic programming,
finding the answer in polynomial time. Condition (1) is
obviously satisfied for the set {n1, n1 + 1, …, n2} and
corresponds to the trivial root В=[n1,n2], containing all
words of length from n1 to n2. Verification of condition (1)
for other subsets of the set {n1, n1 + 1, …, n2} was carried out
by the method of a software implementation of well-known
algorithms for solving the unlimited knapsack problem.
Table 1 shows the results of the program, i.e., the number of
n-th roots from languages of the form А=[t1;t2] for some n
and k (k = n2 – n1 + 1). For k from 1 to 3, the values are 1.
In binary lunar arithmetic, this sequence is the number of
binary numbers x of length k such that x2 has no zeros. In this
paper, we will establish the reason for this coincidence,
interpret our results in terms of lunar arithmetic, and apply
the established relation to solve the knapsack problem.</p>
      <p>Let the initial set be {0, 1}. In the binary case, the lunar
addition (finding a maximum) corresponds to the disjunction,
and the multiplication (finding a minimum) corresponds to
the conjunction. Let us consider lunar operations over
multidigit binary numbers. When adding in each column, select the
maximum: 1011 + 101 = 1111. When multiplying, we follow
the rule of multi-digit numbers multiplication in the lunar
arithmetic shown above.</p>
      <p>Thus, 1011 101= 101111 (when summing by columns we
find the maximum).</p>
      <p>We see that the original vector 1011, when multiplied by
1, remains unchanged, shifting to the left by the position of
this bit. This multiplication is similar to a multiplication in
the ring Z[x] of polynomials. If the original polynomial f(x)
is multiplied by xi, then all its coefficients will remain
unchanged, only i zeros will be added to the right, which
corresponds to a shift of the coefficient vector f(x) by i
positions to the left. We associate the binary vector 1011 with
the polynomial x3+x+1 and vector 101 with the polynomial
x2+1. We get:</p>
      <p>(x3+x+1)1= x3+x+1=1011
(x3+x+1) x2= x5+x3+ x2=101100</p>
      <p>Adding the coefficients at the equal powers, we have
x5+2x3+x2+x+1=102111. In the polynomial ring, when
calculating the coefficients at the equal power, we perform
the usual addition, and in the lunar binary arithmetic if there
is 1 in the column, the result is 1, if all the numbers are zeros,
the result is 0. Thus, the following theorem is true.</p>
      <p>Theorem 1. Let us compare the polynomial</p>
      <p>anxn+an-1xn-1+…+a1x+a0
to the binary vector (an,an-1,…,a1,a0). When the mapping is
set in this way, operations in binary lunar arithmetic
correspond to operations on polynomials in the ring Z[x] with
subsequent replacement of non-zero coefficients by 1.</p>
      <p>Proof.</p>
      <p>Without loss of generality, we consider two binary
vectors a=(an,an-1,…,a1,a0) and b=(bn,bn-1,…,b1,b0) of the
same length. Otherwise, we can add to the shorter vector
zeros on the left. Then a+b=(an bn, an-1 bn-1,…,a1 b1, a0
b0) and 0 will be in the i-th position if and only if ai= bi=0.
On the other hand, for the polynomials
a(x)=anxn+an-1xn1+…+a1x+a0 and b(x)=bnxn+bn-1xn-1+…+b1x+b0, we have
a(x)+ b(x)= (an+ bn) xn+(an-1+bn-1 )xn-1+…+ (a1+b1 )x+a0+b0
Since the initial vectors a and b are binary, the coefficients of
the polynomial a(x)+ b(x) belong to the set {0,1,2}, moreover
the coefficient xi equals 0 if and only if ai= bi=0. For this
reason, after replacing all nonzero coefficients by 1, the
coefficient vector of the polynomial a(x)+ b(x) is equal to the
vector a+b.</p>
      <p>The corresponding results for multiplication can be
derived similarly.</p>
      <p>We found the sequence for n = 2 on the website
http://oeis.org/A191701, which, in turn, refers to the work
[1]. D. Applegate, M. Lebrun and N. J. A. Sloane obtained
this sequence for k from 1 to 41:</p>
      <p>1, 1, 1, 1, 2, 3, 5, 9, 15, 28, 50, 95, 174, 337, 637, 1231,
2373, 4618, 8974, 17567, 34387, 67561, ... (2)</p>
      <p>III.</p>
      <p>BINARY LUNAR ARITHMETIC AND THE PROBLEM OF
FINDING ALL THE ROOTS OF THE LANGUAGE</p>
      <p>Next, we interpret the content of the sequence (1).
According to the author’s terminology, this sequence
represents the number of k-digit long binary vectors. The
lunar squares of these vectors consist of all ones. The lunar
square is the result of multiplying the vector by itself.</p>
      <p>Example 3. Lunar squares of the following 5 vectors with
the same length k = 7: 1111111, 1111011, 1101111, 1101011
and 1110111 are 1111111111111=1(13), therefore, the seventh
term in the sequence (1) is 5. For all other 7-digit long binary
vectors, the lunar square will contain zeros.</p>
      <p>Let us move to the polynomial operations.</p>
      <p>For instance, we associate the polynomial
a(x)=x6 + x5 + х3 + х + 1 with the fourth vector a=1101011.
After multiplying the polynomial with itself, we get
(x6 + x5 + х3 + х + 1) (x6 + x5 + х3 + х + 1) =
=c12x12 + c11x11 +c10x10 + c9x9 + c8x8 + c7x7 + c6x6 +
+ c5x5 + c4x4 + c3x3 + c2x2 + c1x + c0.</p>
      <p>Following the rule of theorem 1, we consider all non-zero
coefficients equal to 1.</p>
      <p>c0= a0 a0=1,
c1= a0 a1+ a1 a0=1+1=1,
c2= a0 a2+ a1 a1+ a2 a0=0+1+0=1, and so on.</p>
      <p>We get c0= c1=…= c12=1.</p>
      <p>The power xi can be represented as the sum of the powers
of the factors, that is as a sum of powers of a polynomial a(x),
if and only if this power is present in the product a(x)a(x).
For some, not necessarily different, j and k we obtain i=j+k,
where j, k{0, 1, 3, 5, 6}.</p>
      <p>In the polynomial a(x)a(x), all the coefficients ci are
nonzero, hence any i from 0 to 12 can be represented as the
sum of two (not necessarily different) numbers from {0,
1, 3, 5, 6}.</p>
      <p>Let us recall that the problem of extracting all the roots
from the language А=[t1;t2] is reduced to the same question.
In the example 1 we extracted 5 square roots from the
language А=[2;14] with the sets of indices:
{1, 2, 3, 4, 5, 6, 7}, {1, 2, 3, 4, 6, 7}, {1, 2, 4, 5, 6, 7},
{1, 2, 4, 6, 7} and {1, 2, 3, 5, 6, 7}. We associate these
subsets of the set {1, 2, 3, 4, 5, 6, 7} to its binary
characteristic vector (1, 2, …, 7), so we obtain 5 binary
7-digit long vectors from the example 3.</p>
      <p>Let us interpret the results obtained in Table 1 in terms of
lunar arithmetic.</p>
      <p>It is not difficult to verify that the second sequence of the
number of cubic roots from languages of the form А=[t1;t2]
coincides with the number of k-digit long binary numbers,
whose lunar cubes consist of ones.</p>
      <p>In particular, for k = 6, the lunar cubes of four vectors:
110011, 111011, 110111, and 111111 give a unit vector (it
will be 16 -digit long). These vectors are characteristic
vectors for the sets of indices from Example 2.</p>
      <p>In the general, the following theorem is true.</p>
      <p>Theorem 2. Let  be an arbitrary alphabet. Let k be the
cardinal number of the set {n1, n1+1,..., n2}, i.e.
k = n2 – n1 + 1. Let M be a subset of the set
{n1, n1 + 1, …, n2}, and  = (1, 2, …, k) be the binary
characteristic vector of the subset M. The language В=(М)
is a n‒th root from the language А=[nn1;nn2] if and only if
in binary lunar arithmetic n has no zeros.</p>
      <p>The Theorem 2 provides another method to verify whether
a subset М is a set of indices for some root from a language of
the form А=[t1;t2].</p>
      <p>IV.</p>
    </sec>
    <sec id="sec-2">
      <title>APPLICATION OF LUNAR ARITHMETIC TO SOLVING</title>
      <p>THE KNAPSACK PROBLEM</p>
      <p>The classical knapsack problem in general can be
formulate as follows: given a set of items, each with a weight
and a value, select a certain subset of objects so that we get
maximum total cost, subject to the restrictions on the total
weight.</p>
      <p>The unlimited knapsack problem is a generalization of the
classical problem when any item can be taken any number of
times. We consider a special case of this problem when the
value of the item is a natural number, and equal to its weight.
Therefore, we may not take into account the cost of items, but
only their weight. We also add the condition that the taken
items must be equal exactly M. We formulate this problem in
mathematical language.</p>
      <p>The knapsack problem 1. Given N items. The capacity
of the knapsack is W, M - the number of items to be taken,
and the natural numbers w1, w2, …, wN. - are weights
corresponding to the items. Find a set of values x1, x2, …, xN,
where xi is the number of taken items of a certain type, and
such that:
1. x1 w1 + … + xN wN ≤ W;
2. x1 + … + xN = M;
3. x1 w1 + … + xN wN has a maximum.</p>
      <p>Note. All the weights of objects are different. If there are
any objects with the same weight, then we will always take
from them only some specific one. Such an assumption will
not change anything in problem 1, since any item can be
selected any number of times.</p>
      <p>Algorithm</p>
      <p>Step 1. Create a polynomial  =   1 +   2 + ⋯ +   
according to the selected set of weights ŵ= {w1, w2, …, wN}.</p>
      <p>Step 2. Associate the polynomial y with the binary vector
u of its coefficients. Then, in the vector u, for all ui, the
following condition holds ui=1, if i ŵ; otherwise ui=0.</p>
      <p>Step 3. Raise the vector u to the power M in the lunar
binary arithmetic. We get the binary vector z = uM.</p>
      <p>In the vector z, all nonzero zk denote that there exists a set
of exactly M objects, not necessarily different, whose sum of
weights is k. This statement justifies the next step.</p>
      <p>Step 4. Choose the maximum number k satisfying the
conditions: k W and zk≠0.</p>
      <p>Step 5. Find the linear combination methodx1 w1 + … +
xN wN=k using the backstepping.</p>
      <p>Example 4. Given 4 items with weights 2, 3, 6, 7, and
the capacity of the knapsack W=17. Find exactly 3 items.</p>
      <p>Step 1. Create the polynomial  =  2 +  3 +  6 +  7.</p>
      <p>Step 2. Associate the polynomial y with the binary vector
u=(11001100) of its coefficients.</p>
      <p>Step 3. Compute u3 in the lunar arithmetic, we obtain:
u2= (111011101110000), or (by the theorem 1)  2 =
 14 +  13 +  12 +  10 +  9 +  8 +  6 +  5+ 4.
u3= (111111111111111000000) = (11606).</p>
      <p>Step 4. k=17.</p>
      <p>Step 5. 17=10+7; 10=7+3. Hence, 17=7+3+7, so that we
need to choose 2 items weighing 7 and one item weighing 3.</p>
      <p>There is a second solution 17=14+3; 14=7+7. Hence
17=7+7+3, which, in fact, coincides with the first solution.</p>
      <p>We evaluate the asymptotic complexity of this algorithm.
Let us denote by wmax = max{ wi | 1 ≤ i ≤ N} the weight of
the heaviest item, that is, the maximum power of the
polynomial y. Then wmax ∙ M is the maximum power of the
polynomial yM=z. The latter operation can be implemented in
a naive way, which involves sequentially calculating the
powers of y from 2 to M, or using the “binary power raising”
technique, which allows raising any number to the power of
n in O (log n) multiplications instead of n multiplications in
the usual sequential multiplication. Using this technique, the
asymptotic complexity of this algorithm is
O ((wmax ∙ M )2 ∙ log (M )), where ( wmax ∙ M )2 is the
algorithmic complexity of multiplying two polynomials,
log M is the algorithmic complexity of binary
exponentiation.</p>
      <p>We can use the Fast Fourier Transform algorithm (FFT)
[4, 5] to multiply two polynomials. To multiply two
polynomials in binary lunar arithmetic, based on Theorem 1,
it suffices to multiply the polynomials over the standard
complex field and, after obtaining the resulting polynomial,
change the coefficients that are greater than one by one.
Multiplication of polynomials in binary lunar arithmetic using
FFT has asymptotic complexity O (wmax · log(wmax)). Thus, it
turned out to improve the asymptotic complexity of the
original algorithm to O (wmax · log(wmax) · log(M)). We also
note that FFT can be implemented using the parallel algorithm
from [6].</p>
      <p>V. COMPARATIVE ANALYSIS OF SOLUTIONS TO THE</p>
      <p>KNAPSACK PROBLEM</p>
      <p>A comparative analysis of the program execution time
among various solutions to the problem 1 on the knapsack
problem was carried out by the 2nd year master specialized
in 01.04.02 “Applied Mathematics and Computer Science”
A. I. Chesnokov. Testing was carried out on computing M-th
power of random polynomials of power N. There are the
restrictions on N and M in experiments:</p>
      <p>Test 1 – N = 500, M = 500;
Test 2 – N = 500, M = 1000;
Test 3 – N = 1000, M = 500;
Test 4 – N = 1000, M = 1000;
Test 5 – N = 1500, M = 500;
Test 6 – N = 1500, M = 1000;
Test 7 – N = 2000, M = 500;
Test 8 – N = 2000, M = 1000.</p>
      <p>There were 7 different solutions to the knapsack problem
1 [7,8].</p>
      <p>- Solution A is a solution using dynamic programming;
- Solution B is a solution using dynamic programming
using bitmasks;</p>
      <p>- Solution C is a solution using the product of polynomials
in lunar arithmetic. The product of polynomials is computed
using the fast Fourier transform. The M-th power of a
polynomial is computed in a naive way;</p>
      <p>- Solution D is a solution using the product of polynomials
in lunar arithmetic. The product of polynomials is produced
using the fast Fourier transform. The M-th power of a
polynomial is computed using binary exponentiation;
- Solution E is a solution using the product of polynomials
in lunar arithmetic. The product of polynomials is produced
using the fast Fourier transform. The M-th power of a
polynomial was raised using binary exponentiation. The
parallel FFT algorithm was used [6]. Calculations are made
on 2, 4, or 8 processors.</p>
      <p>Testing was conducted on a cluster of CAFU, which has
the following characteristics:
- 20 computing nodes;
- on each node there are 2 ten-core Intel Xeon processors
and 64 GB of RAM;</p>
      <p>- additionally installed mathematical coprocessors Intel
Xeon Phi 5110P on the eighth node;</p>
      <p>- The internal computer network for computing:
Infiniband 56 Gb / s;</p>
      <p>- FEFS network file system (Fujitsu Exabyte File System)
with a capacity of more than 50 TB and a bandwidth of 1.67
GB / s (13.36 GB / s);</p>
      <p>- cluster performance on the CPU in the LINPACK test
8.02 Tflops; on CPU + Xeon Phi 7.68 Tflops, cumulative 15.7
Tflops;</p>
      <p>The results of the execution time of the programs are
presented in table 2.</p>
      <p>According to table 2, we can make a conclusion that the
solution to problem 1 using FFT in binary lunar arithmetic
and binary exponentiation is faster than the other solutions.
The speed of the parallel FFT algorithm in all the tests
increases noticeable, especially with the increasing number
of threads (in some cases, significantly).</p>
    </sec>
    <sec id="sec-3">
      <title>VI. CONCLUSION</title>
      <p>Let us summarize the results. In the theoretical part of the
work, we established a relation between operations in binary
lunar arithmetic and in the ring of polynomials with integer
coefficients (Theorem 1). We also created an association
between binary numbers x of length k for which xn does not
contain zeros in binary lunar arithmetic and sets of indices of
roots of the n-th power from a language of a special form
(Theorem 2). A generalization of the problem of extracting
the n-th root from a language of a special kind is a
mathematical model of a special case of the problem of an
unbounded knapsack problem (Problem 1). To solve this
problem, we developed an algorithm based on lunar binary
arithmetic.</p>
      <p>We made the software implementation of the proposed
algorithm in several variants, using optimization methods of
calculations and parallel technologies. Table 2 gives us a
chance to compare the solution obtained by the authors with
other known solutions (solution A and solution B) of the
unbounded knapsack problem.</p>
      <p>The knapsack problem belongs to the class NP‒complete
problems. This means that there is no polynomial algorithm
to obtain the exact result (solution). The results presented in
table 2 demonstrate that, despite this pessimistic fact, in some
cases, a solution to such a problem can be obtained in
seconds.</p>
      <p>
        The results obtained in this research can be applied to solve
many problems related to the knapsack problem. In particular,
the problem of estimating the number of different cyclic codes
with given parameters was solved in [9] using this method.
Some additional algorithms were proposed in [
        <xref ref-type="bibr" rid="ref10 ref11 ref12">10,11,12</xref>
        ].
      </p>
      <p>S.Yu. Korabel’shchikova, A.I. Chesnokov and A.G. Tutygin, “On
primitive roots from languages of a special type,” Proceedings of the</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>D.</given-names>
            <surname>Applegate</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>LeBrun</article-title>
          and
          <string-name>
            <given-names>N.J.A.</given-names>
            <surname>Sloane</surname>
          </string-name>
          , “Dismal Arithmetic,” Arxiv preprint:
          <volume>1107</volume>
          .1130v2.pdf,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>[3] IX international conference Discrete models in the theory of control systems</article-title>
          , pp.
          <fpage>116</fpage>
          -
          <lpage>118</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>B.F.</given-names>
            <surname>Melnikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Yu. Korabelshchikova</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.N.</given-names>
            <surname>Dolgov</surname>
          </string-name>
          , “
          <article-title>On the task of extracting the root from the language</article-title>
          ,”
          <source>International Journal of Open Information Technologies</source>
          , vol.
          <volume>7</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Nussbaumer</surname>
          </string-name>
          , “
          <article-title>Fast Fourier Transform and convolution algorithms of computation</article-title>
          ,” Moscow: Radio and communications,
          <year>1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Yu</surname>
          </string-name>
          .
          <article-title>Korabel'shchikova and</article-title>
          <string-name>
            <surname>A.I. Chesnokov</surname>
          </string-name>
          , “
          <article-title>Lunar arithmetic algorithms and fast Fourier transform in a knapsack problem,” Heuristic Algorithms</article-title>
          and Distributed Computing, vol.
          <volume>2</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>41</fpage>
          -
          <lpage>49</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>V.V.</given-names>
            <surname>Voevodin</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vl.V.</given-names>
            <surname>Voevodin</surname>
          </string-name>
          , 'Parallel computing,” SPb.:
          <string-name>
            <surname>BHV-Petersburg</surname>
          </string-name>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>D.</given-names>
            <surname>Pisinger</surname>
          </string-name>
          , ”Knapsack problems,”
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Martelo</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Toth</surname>
          </string-name>
          , “Knapsack problems,” Wiley,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Yu</surname>
          </string-name>
          .
          <article-title>Korabel'shchikova and</article-title>
          <string-name>
            <surname>A.I. Chesnokov</surname>
          </string-name>
          , “
          <article-title>On the number of different cyclic codes of a given length,” Vector science TSU</article-title>
          , vol.
          <volume>4</volume>
          , no.
          <issue>26</issue>
          , pp.
          <fpage>25</fpage>
          -
          <lpage>26</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.Y.</given-names>
            <surname>Korabelshchikova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.V.</given-names>
            <surname>Zyablitseva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.F.</given-names>
            <surname>Melnikov</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.V.</given-names>
            <surname>Pivneva</surname>
          </string-name>
          , “
          <article-title>Linear codes and some their applications</article-title>
          ,
          <source>” Journal of Physics: Conference Series electronic edition</source>
          ,
          <volume>012174</volume>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.F.</given-names>
            <surname>Mel</surname>
          </string-name>
          <article-title>'nicov, S.Yu. Korabel'shchikova, “Algorithms for computing the number of error-correcting codes of a general and special form,” Informatization and communication</article-title>
          , vol.
          <volume>1</volume>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>60</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>V.M.</given-names>
            <surname>Chernov</surname>
          </string-name>
          , “Fibonacci, tribonacci, ...,
          <article-title>hexanacci and parallel "error-free" machine arithmetic,” Computer Optics</article-title>
          , vol.
          <volume>43</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>1072</fpage>
          -
          <lpage>1078</lpage>
          ,
          <year>2019</year>
          . DOI:
          <volume>10</volume>
          .18287/
          <fpage>2412</fpage>
          -6179-2019-43-6-
          <fpage>1072</fpage>
          -1078.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>