Solving

Đề bài

Hồi nhỏ, trong một lần nghịch ngợm, Bình đã phải chịu hình phạt giải toán như sau: Hãy tìm tất cả các số nguyên x (0 < x < 10^9) là nghiệm của phương trình sau:

x = b * s(x) ^ a + c

với a, b, c là các hằng số cho trước. s(x) là hàm trả về tổng của tất cả các chữ số của x.

Bạn có thể giải bài toán này ?

Input
Ba số nguyên a, b, c (1 ≤ a ≤ 5; 1 ≤ b ≤ 10000;  - 10000 ≤ c ≤ 10000).

Output
Dòng đầu tiên là số nguyên n, số nghiệm của phương trình. Dòng tiếp theo là n số nguyên theo thứ tự tăng dần - là các nghiệm của phương trình. Chỉ in các số nguyên lớn hơn 0 và nhỏ hơn 10^9.

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys

input_str = ""

for line in sys.stdin:
arr = line.split()
a = int(arr[0])
b = int(arr[1])
c = int(arr[2])
result = []
for i in range(82):
x = b * i ** a + c
if x <= 0 or x > 10 ** 9:
continue
n = x

sumx = 0
while n > 0:
sumx += n % 10
n //= 10
if sumx == i:
result.append(x)
print(len(result))
print( ' '.join([str(i) for i in sorted(result)]))