Loading Now

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ới n=12 chúng ta có 3 cách phân tích 1*12, 2*6, 3*4.
    Với cách phân tích x=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ích x=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=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*102*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ành 1*62*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*42*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

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ương k khác nhau được sắp xếp theo thứ tự tăng dần.

Post Comment

Contact