M. Эргүүлэлт

хугацааны хязгаарлалт 0.5 секунд

санах ойн хязгаарлалт 64 мегабайт

оролт стандарт оролт

гаралт стандарт гаралт

Вася IT хотын мэдрэмжит машины компанид ажилладаг. Васягийн багийнхан хүмүүсийг нүүрээр нь таньдаг програм хангамж болон техник хангамж бүтээдэг.

Уг төслийн нэг чадвар нь зураг авалтын үед камерийн дуранг эргүүлэх юм. Хүмүүс эргэдэг камер буюу нүд тогтоох хэрэгслийг харах ба үүнийг илүү сайн харахын тулд ойртон ирнэ. Энэ үед камер тэдний зургийг авна. Өндөр чанартай танихын тулд юу хийж болох вэ?

Бүх зүйл тийм ч хялбар биш. Камерын авсан зургууд мөн эргэсэн байна (камер цагийн зүүний дагуу эргэсэн тохиолдолд зураг нь цагийн зүүний эсрэг эргэнэ). Гэхдээ таних алгоритм нь зөвхөн босоо тэнхлэгээс бага зэрэг хазайсан нүүртэй л ажиллаж чадна.

Васяд нөхцөл байдлыг зөв болгох даалгавар ноогдсон ба тэр авсан зургийг эргүүлэх ба зураг босоо тэнхлэгээс хамгийн бага хэмжээгээр хазайсан байх ёстой. Эхлээд зургийн тухай бит мэдээллийг алдахгүй байхын тулд зураг зөвхөн 90 градуст хуваагддаг өнцгөөр эргэсэн байх ёстой. Хоёрт камерний фрэйм маш том ба секундэд оногдох фрэймийн тоо нь их. Тохиромжтой эргүүлэх хурдыг FPGA шийдэл гэх төхөөрөмж л хангаж чадна. Мөн энэ шийдэл нь цагийн зүүний дагуу 90 градусаар л эргүүлж чадна. Мэдээж 90 градусаар хэдэн ч удаа эргүүлж болох боловч гүйцэтгэлийг сайжруулах үүднээс эргэлтийн тоо нь хамгийн бага байх ёстой.

Васяд камерны өгөгдсөн эргэлтийн өнцгийг ашиглан зургийг босоо тэнхлэгээс хамгийн бага хазайлттай болгохын тулд цагийн зүүний дагуу 90 градусаар эргүүлэх хамгийн бага тоог тодорхойлдог програм бичихэд нь туслана уу.

Дараах зурагт эргээгүй камераар авсан фрэйм тэгээд цагийн зүүний эсрэг 90 градус эргэсэн камераар авсан фрэйм тэгээд цагийн зүүний дагуу 90 градус камераар авсан фрэймийг үзүүлсэн байна. Сум нь бодит байдлаар дээшээ харсан чиглэлрүү заасан байна.

Дараах зурагт FPGA төхөөрөмжийн цагийн зүүний дагуу 90 градусын эргүүлэлтийг харуулсан байна.

Оролт

Оролтын нэг мөрөнд нэг бүхэл тоон утга $x$ ($ - 10^{18} ≤ x ≤ 10^{18}$) байх ба камерны эргэлтийг өнцгөөр өгнө. Эерэг утга нь цагийн зүүний дагуух камерны эргэлтийг илтгэх бол сөрөг утга нь цагийн зүүний эсрэгийг илтгэнэ.

Гаралт

Цагийн зүүний дагуух 90 градус эргүүлэх хамгийн бага тоог илэрхийлэх нэг бүхэл тоог хэвлэ.

Орчуулсан: Г.Мэндбаяр

Жишээ тэстүүд

Оролт
60
Гаралт
1
Оролт
-60
Гаралт
3

Тэмдэглэл

Хоёр дахь жишээн дээр камер цагийн зүүний эсрэг $60$ градус эргэсэн тохиолдолд зураг цагийн зүүний дагуу $60$ градус эргэсэн гэсэн үг. Нэг удаа цагийн зүүний дагуу $90$ градус эргүүлэхэд зураг цагийн зүүний дагуу $150$ градусын хазайлттай болно. Хоёр удаа цагийн зүүний дагуу $90$ градус эргүүлэхэд зураг цагийн зүүний дагуу $240$ градус хазайлттай болох боловч цагийн зүүний эсрэг хазайлт нь $120$ градус болох юм. Гурван удаа цагийн зүүний дагуу $90$ градус эргүүлэхэд зургийн цагийн зүүний дагуу хазайлт нь $330$ градус болох ба энэ нь цагийн зүүний эсрэг $30$ градус хазайсантай ижил юм.

$60$, $150$, $120$ ба $30$ градусын хазайлтуудаас хамгийн бага нь $30$ ба нийт гурван удаа цагийн зүүний дагуу $90$ градусын эргүүлэлт хийх юм.

Сэтгэгдлүүдийг ачааллаж байна...