Lũy thừa và bội số


Submit solution

Points: 4 (partial)
Time limit: 0.3s
Memory limit: 67M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Mặc dù học hành rất chăm chỉ nhưng Dani vẫn không nắm vững kiến thức toán học cơ bản. Hôm nay cô giáo cho bài tập tính các lũy thừa bậc b cơ số a, Dani hiểu nhầm sang khái niệm bội số và tính hết thành ab.

Từ kết quả của Dani, bạn hãy lập trình giúp cô ấy tìm lại kết quả đúng, kết quả đúng luôn là giá trị lớn nhất có thể. Tuy nhiên nếu Dani "ăn may" ra kết quả đúng bạn hãy xuất ra dòng chữ "OK".

Do con số có thể rất lớn bạn hãy lấy số dư khi chia cho 109+7.

Đầu vào

Dòng đầu tiên chứa số tự nhiên t (1t106), số lượng test con.

t dòng tiếp theo mỗi dòng chứa một số tự nhiên n là kết quả của Dani.

Tổng của n trong tất cả các testcase (đối với một bộ test) đảm bảo không vượt quá 1012.

Đầu ra

t dòng, mỗi dòng chứa duy nhất một số tự nhiên hoặc xâu "OK".

Subtask

30% số test có t=1.

Ví dụ

Đầu vào:

Copy
2
90
5

Đầu ra:

Copy
130653412
OK

Giải thích:

Trong testcase đầu tiên, 90=245=330=..., như vậy các giá trị có thể đúng là 245,330,... Trong những số như vậy thì 330 đạt giá trị lớn nhất nên 330 là kết quả đúng; do đó ta xuất ra 330%(109+7)=130653412.

Trong testcase thứ hai, 51=51.

QDUY

Comments

There are no comments at the moment.