
goToZero
Mỗi một số nguyên dương n
đều có thể biểu diễn dưới dạng tích của hai số nguyên dương x
, y
( x <= y
). Nếu như trong cách phân tích này, ta thay x
bởi x-1
, y
bởi y+1
thì sau khi nhân chúng với nhau, chúng ta sẽ thu được :
- hoặc là số
0
. - hoặc là một số nguyên dương
k
mới.
Nếu như kết quả là một số nguyên dương k
mới, chúng ta sẽ lặp lại các bước như bên trên giống như đã làm với n, thì cuối cùng chúng ta cũng sẽ thu được số 0
.
Cho số nguyên dương n
, hãy in ra tất cả các số nguyên dương k khác nhau có thể gặp trong việc áp dụng các bước đã mô tả ở trên với n
theo thứ tự tăng dần.
Ví dụ:
- Với
n = 12
, thì kết quả sẽ làgoToZero(n)=[0, 3, 4, 6, 7, 10]
.
Giải thích:
Vớin=12
chúng ta có 3 cách phân tích1*12
,2*6
,3*4
.
Với cách phân tíchx=1, y=12
chúng ta sẽ có tích mới là(1-1)*(12+1)=0
. Vậy ta cók=0
.
Với cách phân tíchx=2, y=6
, chúng ta sẽ có tích mới là(2-1)*(6+1)=7
. Vậy ta cók=7
.- Với k=7, ta có thể phân tích nó thành 1*7
- Với cách phân tích x=1, y=7 chúng ta sẽ có tích mới là
(1-1)*(7+1)=0
. Vậy ta cók=0
.
- Với cách phân tích x=1, y=7 chúng ta sẽ có tích mới là
- Với k=7, ta có thể phân tích nó thành 1*7
Với cách phân tích x=3, y=4
chúng ta sẽ có tích mới là (3-1)*(4+1)=10
. Vậy ta có k=10
.
- Với k=10, chúng ta có thể phân tích nó thành
1*10
và2*5
.- Với cách phân tích
x=1, y=10
chúng ta sẽ có tích mới là(1-1)*(10+1)=0
. Vậy ta cók=0
- Với cách phân tích
x=2, y=5
chúng ta sẽ có tích mới là(2-1)*(5+1)=0
. Vậy ta cók=6
.
Với k=6, chúng ta có thể phân tích nó thành1*6
và2*3
- Với cách phân tích
x=1, y=6
chúng ta sẽ có tích mới là(1-1)*(6+1)=0
. Vậy ta cók=0
- Với cách phân tích
x=2, y=3
chúng ta sẽ có tích mới là(2-1)*(3+1)=0
. Vậy ta cók=4
.Với k=4, chúng ta có thể phân tích nó thành
1*4
và2*2
- Với cách phân tích
x=1, y=4
chúng ta sẽ có tích mới là(1-1)*(4+1)=0
. Vậy ta cók=0
- Với cách phân tích
x=2, y=2
chúng ta sẽ có tích mới là(2-1)*(2+1)=0
. Vậy ta cók=3
.
Với K=3, chúng ta có thể phân tích nó thành 1*3- Với cách phân tích
x=1, y=3
chúng ta sẽ có tích mới là(1-1)*(3+1)=0
. Vậy ta cók=0
- Với cách phân tích
- Với cách phân tích
- Với cách phân tích
- Với cách phân tích
Kết quả sẽ là dãy các số Ktìm được khác nhau sắp xếp theo thứ tự không giảm: [0, 3, 4, 6, 7, 10]
.
Đầu vào/Đầu ra:
- [Thời gian chạy] 0.1s (C++), 0.6 (Java và C#), 0.8s (Python, Javascript và Go)
- [Đầu vào] interger n
1 ≤ n ≤ 50000
- [Đầu ra] array.integer
Dãy tất cả các số nguyên dươngk
khác nhau được sắp xếp theo thứ tự tăng dần.
Post Comment