Xoắn ốc (THTA KV Miền Bắc & Trung 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một bảng vuông kích thước \(N \times N\).

Các số tự nhiên từ \(1\) đến \(N^2\) được điền vào bảng theo thứ tự từ trái sang phải, từ trên xuống dưới.

Ví dụ với \(N = 4\), bảng là:

 1   2   3   4
 5   6   7   8
 9  10  11  12
13  14  15  16

Sau đó, ta đọc các số theo quy luật xoắn ốc từ ngoài vào trong:

  • Đi hết hàng trên từ trái sang phải;
  • Đi hết cột phải từ trên xuống dưới;
  • Đi hết hàng dưới từ phải sang trái;
  • Đi hết cột trái từ dưới lên trên;
  • Tiếp tục với lớp bên trong theo đúng quy luật trên.

Với \(N = 4\), dãy nhận được là: \(1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10\).

Yêu cầu: Cho hai số tự nhiên \(N\)\(K\), hãy tìm số thứ \(K\) trong dãy đọc theo quy luật xoắn ốc.

Input

  • Dòng thứ nhất chứa số tự nhiên \(N\) (\(1 \le N \le 10^8\)).
  • Dòng thứ hai chứa số tự nhiên \(K\) (\(1 \le K \le N^2\)).

Output

  • In ra một số tự nhiên duy nhất là số thứ \(K\) trong dãy đọc theo quy luật xoắn ốc.

Example

Test 1

Input
4
6
Output
12
Note

Với \(N = 4\), dãy xoắn ốc bắt đầu là: \(1, 2, 3, 4, 8, 12, \dots\)
Số thứ \(6\)\(12\).

Test 2

Input
5
20
Output
14
Note

Ví dụ với \(N = 5\), bảng là:

 1   2   3   4   5
 6   7   8   9  10
11  12  13  14  15
16  17  18  19  20
21  22  23  24  25

Dãy số là \(1, 2, 3, 4, 5, 10, 15, 20, 25, 24, 23, 22, 21, 16, 11, 6, 7, 8, 9, 14, 19, 18, 17, 12, 13\).

Scoring

  • Subtask \(1\) (\(40\%\) số điểm): \(N \le 10\).
  • Subtask \(2\) (\(30\%\) số điểm): \(N \le 300\).
  • Subtask \(3\) (\(20\%\) số điểm): \(N \le 10^6\).
  • Subtask \(4\) (\(10\%\) số điểm): Không có ràng buộc bổ sung.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: