Simple Design (Codeforces 1884A)
Tags: Math, brute force

A positive integer is called $$$k$$$-beautiful, if the digit sum of the decimal representation of this number is divisible by $$$k^{\dagger}$$$. For example, $$$9272$$$ is $$$5$$$-beautiful, since the digit sum of $$$9272$$$ is $$$9 + 2 + 7 + 2 = 20$$$.You are given two integers $$$x$$$ and $$$k$$$. Please find the smallest integer $$$y \ge x$$$ which is $$$k$$$-beautiful.$$$^{\dagger}$$$ An integer $$$n$$$ is divisible by $$$k$$$ if there exists an integer $$$m$$$ such that $$$n = k \cdot m$$$.

Input: Each test contains multiple test cases. The first line contains the number of test cases $$$t$$$ ($$$1 \le t \le 10^4$$$). The description of the test cases follows.The only line of each test case contains two integers $$$x$$$ and $$$k$$$ ($$$1 \le x \le 10^9$$$, $$$1 \le k \le 10$$$).

Output: For each test case, output the smallest integer $$$y \ge x$$$ which is $$$k$$$-beautiful.

Note: In the first test case, numbers from $$$1$$$ to $$$4$$$ consist of a single digit, thus the digit sum is equal to the number itself. None of the integers from $$$1$$$ to $$$4$$$ are divisible by $$$5$$$.In the fourth test case, the digit sum of $$$777$$$ is $$$7 + 7 + 7 = 21$$$ which is already divisible by $$$3$$$.

Sample Inputs:
6
1 5
10 8
37 9
777 3
1235 10
1 10

Sample Outputs:
5
17
45
777
1243
19

Solution (Python):
l = []

def somme(t):
    s = 0
    while t != 0:
        s += t % 10
        t //= 10
    return s
for _ in range(int(input())):
    (x, k) = map(int, input().split())
    while somme(x) % k != 0:
        x += 1
    l.append(x)
print(*l)

Solution (Python):
def digit_sum(num):
    total = 0
    while num > 0:
        total += num % 10
        num //= 10
    return total

def smallest_k_beautiful(t, test_cases):
    results = []
    for i in range(t):
        (x, k) = test_cases[i]
        current = x
        while True:
            if digit_sum(current) % k == 0:
                results.append(current)
                break
            else:
                current += 1
    return results
t = int(input())
test_cases = []
for _ in range(t):
    (x, k) = map(int, input().split())
    test_cases.append((x, k))
output = smallest_k_beautiful(t, test_cases)
for num in output:
    print(num)

Solution (Python):
L = []

def somme(t):
    s = 0
    while t != 0:
        s += t % 10
        t = t // 10
    return s
for _ in range(int(input())):
    (x, k) = map(int, input().split())
    while somme(x) % k != 0:
        x += 1
    L.append(x)
print(*L)