Pairs with Sum divisible by 5

Python 2, 32 bytes

lambda m,n:(m*n+abs(m%5-~n%5))/5

Try it online!

Adapts an idea from Arnauld. We estimate that \$1/5\$ of the \$mn\$ pairs will satisfy the mod-5 condition. Th actual value may be one higher depending on the mod-5 values of \$m\$ and \$n\$, and we bump up \$mn\$ a bit so that these make it pass the next multiple of 5.


34 bytes

lambda m,n:m*n/5+(0<-m%5*(-n%5)<5)

Try it online!

34 bytes

lambda m,n:m*n/5+(m*n%5+m%5+n%5)/9

Try it online!

36 bytes

lambda m,n:m*n/5+((5-m%5)*(5-n%5)<5)

Try it online!

36 bytes

lambda m,n:m*n/5+(abs(m%5+n%5*1j)>4)

Try it online!

36 bytes

lambda m,n:m*n/5+(m%5*5/4+n%5*5/4>5)

Try it online!

36 bytes

lambda m,n:m*n/5+(m%5+n%5+m*n%5/4>5)

Try it online!


JavaScript (ES6), 29 bytes

Takes input as (m)(n).

m=>g=n=>n&&(m+n%5)/5+g(n-1)|0

Try it online!

How?

Let's consider a grid of width \$m\$ with 1-indexed coordinates and an X mark on each cell for which:

$$(x+y)\equiv 0\pmod 5$$

Here are the first few rows for \$m=9\$:

   | 1 2 3 4 5 6 7 8 9
---+-------------------
 1 | - - - X - - - - X
 2 | - - X - - - - X -
 3 | - X - - - - X - -
 4 | X - - - - X - - -
 5 | - - - - X - - - -
 6 | - - - X - - - - X
 7 | - - X - - - - X -

Computing \$m+(y\bmod5)\$ is equivalent to left-padding each row in such a way that all X marks are vertically aligned and appear on columns whose index is a multiple of \$5\$.

With such a configuration, the number of marks is directly given by \$\lfloor{L_y/5}\rfloor\$, where \$L_y\$ is the updated length of the \$y\$-th row.

 y | y%5 |         padded row         | length | // 5
---+-----+----------------------------+--------+------
 1 |  1  |  + - - - X - - - - X       |   10   |   2
 2 |  2  |  + + - - X - - - - X -     |   11   |   2
 3 |  3  |  + + + - X - - - - X - -   |   12   |   2
 4 |  4  |  + + + + X - - - - X - - - |   13   |   2
 5 |  0  |  - - - - X - - - -         |    9   |   1
 6 |  1  |  + - - - X - - - - X       |   10   |   2
 7 |  2  |  + + - - X - - - - X -     |   11   |   2
---+-----+----------^---------^-------+--------+------
         |  0 0 0 0 0 0 0 0 0 1 1 1 1 |
         |  1 2 3 4 5 6 7 8 9 0 1 2 3 |

We use this method to recursively compute the number of marks on each row.


Jelly, 5 bytes

p§5ḍS

Try it online!

How?

p§5ḍS - Link: positive integer, M; positive integer N
p     - (implicit [1..M]) Cartesian product (implicit [1..N])
 §    - sums
  5ḍ  - five divides? (vectorises)
    S - sum

Tags:

Math

Code Golf