Khai triển Prairie

Đề bài

Mô tả

Mọi số nguyên dương x có thể được biểu diễn duy nhất dưới dạng

x=1+2+4++2k1+r,

trong đó kr là các số nguyên thỏa mãn k00<r2k. (Khi k=0 thì tổng lũy thừa là rỗng và r=1.) Ta gọi đây là khai triển prairie của x.

Ví dụ, khai triển prairie của 12,17,71 lần lượt là:

  • 12=1+2+4+5
  • 17=1+2+4+8+2
  • 7=1+2+4
  • 1=1

Alice có một dãy số nguyên dương (có thể có phần tử trùng nhau). Cô thay mỗi phần tử của dãy bằng dãy các số hạng trong khai triển prairie của nó, gộp tất cả các số thu được lại, sắp xếp chúng theo thứ tự không giảm rồi đưa cho Borys.

Borys muốn biết dãy gốc của Alice có thể có bao nhiêu phần tử. Hãy tìm tất cả các khả năng.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n, số lượng số Borys nhận được.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an đã được sắp xếp không giảm (a1a2an).

Dữ liệu ra

In ra theo thứ tự tăng dần tất cả các giá trị m sao cho tồn tại một dãy số nguyên dương độ dài m mà: nếu thay mỗi phần tử bằng các số hạng trong khai triển prairie của nó rồi sắp xếp không giảm thì thu được đúng dãy đã cho.

Nếu không tồn tại giá trị m nào như vậy, in ra một số 1.

Ràng buộc

  • 1n105
  • 1ai1012
  • a1a2an

Ví dụ

Input Output Giải thích
5
1 2 4 4 4
-1 Không có dãy gốc nào tạo ra dãy này.
6
1 1 1 2 2 2
2 3 Dãy gốc có thể là [4,5] (độ dài 2) hoặc [3,3,3] (độ dài 3).
8
1 1 2 2 3 4 5 8
2 Dãy gốc có thể là [6,20]: 6=1+2+320=1+2+4+8+5.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0