Trung bình 0 đã giải Tỷ lệ chấp nhận 0%

Tra cứu Xoắn Ốc Số

Tìm giá trị tại một hàng và cột trong một xoắn ốc số mở rộng.

Bạn sẽ học được gì

  • Tìm công thức trong một mẫu số
  • Chia bài toán theo lớp và tính chẵn lẻ
  • Dùng số nguyên 64-bit cho giá trị lớn

Đề bài

Xem bản gốc (English)

Xoắn ốc vô hạn bắt đầu tại ô trên cùng bên trái. Bốn hàng và bốn cột đầu tiên được hiển thị bên dưới. Tiếp tục theo cùng một quy luật với các lớp hình vuông mở rộng. Tọa độ bắt đầu từ 1.

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

Trả về giá trị của một ô mà không cần xây dựng toàn bộ lưới.

Cài đặt hàm number_spiral(row, column).

Đầu vào

row: Số thứ tự hàng tính từ trên xuống, bắt đầu từ 1.

column: Số thứ tự cột tính từ trái sang, bắt đầu từ 1.

Đầu ra

Trả về số tại vị trí đó.

Ràng buộc

1 ≤ row, column ≤ 1.000.000.000. Giá trị trả về vừa với kiểu số nguyên có dấu 64-bit.

Ví dụ

Ví dụ 1
Đầu vào:
row = 3
column = 2

Kết quả mong đợi:
expected = 6
Đầu vào:
long long row = 3;
long long column = 2;

Kết quả mong đợi:
long long expected = 6;
Đầu vào:
long row = 3;
long column = 2;

Kết quả mong đợi:
long expected = 6;

Giải thích

Ở hàng thứ ba được hiển thị, giá trị thứ hai là 6.

Ví dụ 2
Đầu vào:
row = 1
column = 4

Kết quả mong đợi:
expected = 10
Đầu vào:
long long row = 1;
long long column = 4;

Kết quả mong đợi:
long long expected = 10;
Đầu vào:
long row = 1;
long column = 4;

Kết quả mong đợi:
long expected = 10;

Giải thích

Lớp hình vuông thứ tư bắt đầu tại số 10 ở hàng trên cùng.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Vòng xoắn được xây theo từng lớp vuông, nên một ô thuộc lớp được xác định bởi tọa độ lớn hơn.

Gợi ý 2

Dùng tính chẵn lẻ của lớp đó để quyết định giá trị tăng theo hàng hay theo cột.

Gợi ý 3

Chú ý lớp bắt đầu từ góc trên-trái hay từ góc đối diện trước.

Độ phức tạp mong đợi

thời gian O(1), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.