Bạn nên viết chương trình hoặc hàm lấy số nguyên không âm N
làm đầu vào và đầu ra hoặc trả về hai số nguyên (âm, không hoặc dương) X
và Y
.
Các số nguyên có nghĩa là theo nghĩa toán học vì có vô số trong số chúng.
Các chức năng thực hiện phải được tính toán . Điều này có nghĩa là với mỗi N
nó phải xuất ra một X
Y
cặp khác nhau và mỗi X
Y
cặp nên được xuất ra cho một số đầu vào, N
tức là tất cả các cặp sau đây sẽ được xuất ra cho một số N
:
...
┌─────┬─────┬────┬────┬────┐
│-2 -2│-2 -1│-2 0│-2 1│-2 2│
├─────┼─────┼────┼────┼────┤
│-1 -2│-1 -1│-1 0│-1 1│-1 2│
├─────┼─────┼────┼────┼────┤
... │0 -2 │0 -1 │0 0 │0 1 │0 2 │ ...
├─────┼─────┼────┼────┼────┤
│1 -2 │1 -1 │1 0 │1 1 │1 2 │
├─────┼─────┼────┼────┼────┤
│2 -2 │2 -1 │2 0 │2 1 │2 2 │
└─────┴─────┴────┴────┴────┘
...
Lưu ý rằng U V
và V U
là các cặp khác nhau nếu U!=V
.
Chi tiết
- Nếu ngôn ngữ của bạn không hỗ trợ các số nguyên lớn tùy ý thì điều đó tốt nhưng thuật toán của bạn sẽ hoạt động với kiểu dữ liệu số nguyên lớn tùy ý. Mã của bạn vẫn nên hỗ trợ các giá trị đầu vào ít nhất
2^31-1
. - Nếu bạn chọn in hoặc trả lại đầu ra dưới dạng chuỗi, không có dấu hiệu
0
hoặc+
dấu hiệu hàng đầu nào được phép. Nếu không, đại diện số nguyên tiêu chuẩn của ngôn ngữ của bạn là tốt.
Thí dụ
Nếu nhiệm vụ là tạo một hàm tính toán lấy một số nguyên không âm N
và xuất ra một số nguyên thì X
một giải pháp có thể là hàm
if (input mod 2 == 0) return N/2 else return -(N+1)/2
,
thực hiện trong một số ngôn ngữ. Hàm này trả về X = 0 -1 1 -2 2...
cho N = 0 1 2 3 4...
.
10=>11 12, 9=>10 11
điều này không hợp lệ vì 11 được lặp lại?