Dựng test cho ma trận m-tự do

Đề bài

Mô tả

Một ma trận nhị phân (chỉ gồm các phần tử 0 và 1) kích thước n×n được gọi là m-tự do nếu mọi ma trận con vuông kích thước m×m của nó chứa ít nhất một số 0.

Xét bài toán sau: cho hai số nguyên dương n và m, hãy dựng một ma trận m-tự do kích thước n×n sao cho số lượng số 1 là lớn nhất có thể, và in ra số lượng số 1 đó.

Bạn không phải giải bài toán trên. Thay vào đó, bạn cần tạo test cho nó.

Cho t số nguyên x1,x2,…,xt. Với mỗi xi, hãy tìm hai số nguyên ni và mi (1≤mi≤ni≤109) sao cho đáp án của bài toán trên với n=ni và m=mi đúng bằng xi. Nếu có nhiều bộ (ni,mi) thỏa mãn, in ra bất kỳ bộ nào. Nếu không tồn tại bộ nào, in ra −1.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số lượng test cần tạo.
  • t dòng tiếp theo, dòng thứ i chứa số nguyên xi.

Dữ liệu ra

Với mỗi xi, in ra hai số nguyên dương ni và mi trên cùng một dòng, hoặc in ra −1 nếu không tồn tại.

Ràng buộc

  • 1≤t≤100
  • 0≤xi≤109
  • 1≤mi≤ni≤109

Ví dụ

Input Output Giải thích
3
21
0
1
5 2
1 1
-1
Với x=21: ma trận 5×5 với ràng buộc 2-tự do có tối đa 21 số 1. Với x=0: ma trận 1×1 với m=1 buộc phải là 0, có 0 số 1. Với x=1: không tồn tại (n,m) nào cho đáp án đúng bằng 1.
1
5704
77 5 Ma trận 77×77 với ràng buộc 5-tự do có tối đa 5704 số 1.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0