Monday, April 11, 2011

Улсын олимпиадын 2 дугаар давааны бодлого (багш)

Бодлого №1 Тоон дүрслэл
Бодлогын товч нэр: Num_imag
Оролтын файл: Num_im.in
Гаралтын файл: Num_im.out

Математикийн багш нь сурагчдаасаа, утга нь өгөгдсөн натурал N-тоотой тэнцүү байх арифметикийн илэрхийлэл зохиохыг хүссэн. Илэрхийлэлд K-аас хэтрэхгүй нэтурал тоонууд болон нэмэх, үржүүлэх үйлдлүүд, мөн хаалт ашиглах болно. Саруул дэвтэртээ бичиж тэмдэглэх тун дургүй бөгөөд аль болох цөөн тэмэгт агуулсан илэрхийллийг бодож олохыг хүсэж байв. Түүнд туслах програм бичнэ үү.
Оролтын файлын формат
Оролтын файл нь нэг мөрөнд пробелоор тусгаарлагдан бичигдсэн хоёр натурал тоо.
N(1<=N<=10000)-илэрхийллийн утга ба K(1<=K<=10000)-илэрхийлэл дотор ашиглаж болох хамгийн том тооноос тогтно.
Гаралтын файлын формат
Гаралтын файлын цор ганц мөрөнд өгөгдсөн утга бүхий, боломжит хамгийн цөөн байна.
Хэрэв хэд хэдэн шийдтэй бол аль нэгийг нь гарга.
Санамж:
Илэрхийллийн уртыг тооцоолохдоо цифрүүд, үйлдлийн тэмдгүүд, хаалтууд зэрэг бүх тэмдэгтүүдийг тооцно.
Жишээ:

Бодлого №2 Давталт
Бодлогын товч нэр: repeat
Оролтын файл: repeat.in
Гаралтын файл: repeat.out
Ажиллах хугацаа: 1 сек

N тоо (8 оронтой тоо), M(M<10000000) тоонууд өгөгдөв. N тооы цифрүүдийн нийлбэрийг олж нэгжийн орныг 9 дахь цифр болгон бичье. Үүссэн тооны сүүлчийн 8 цифрийн нийлбэрийн нэгжийн орныг мөн 9 дахь цифр болгон бичээд байвал тодорхой алхамын дараа эхний 8 цифр давтагдан гардаг байна. Жишээлбэл 20112011 тоог дээрх аргаар үргэлжлүүлэн бичихэд тодорхой алхамын дараа 20112011 цифрүүд давтагдан гарсан байна.
201120118485...20112011.....
Даалгавар N тоог дээрх аргаар хувиргахад хичнээн алхамын дараа анхны 8 цифр давтагдан гарах вэ?
Оролтын файлын хэлбэр
N ба M тоонууд нэг хоосон зайгаар тусгаарлан байрлана.
Гаралтын файлын хэлбэр
Алхамуудын тоог илэрхийлэх нэг натурал тоо байна. Өгөгдсөн М тоо хүртэл тоог хувиргахад анхны 8 цифр давтагдахгүй бол 0 утга гаргана.
Жишээ1
repeat.in
55555555 50
repeat.out
9
Жишээ2
repeat.in
11111111 100
repeat.out
0
Бодлого №3 Шинэ үйлчилгээ
Бодлогын товч нэр: bank
Оролтын файл: bank.in
Гаралтын файл: bank.out
Хязгаарлалт:

Дэвсгэртийн тоо N(0Захиалгын тоо M(0Дэвсгэртүүдийн хэмжээ N(1<=k1, k2, k3, ..., kN <=65535)
Хүмүүсийн хүсэж буй мөнгөний хэмжээнүүд N(1<=r1, r2, r3, ..., rM <=1500000)
Хугацаа (2 сек)
Нэгэн банк маш олон карт эзэмшигчтэй бөгөө АТМ-үүд дээр нь ихээхэн урт дараалал үүсдэг байжээ. Тухайн банк урт дараалалыг багасгахын тулд хэрэглэгчийн хүссэн бэлэн мөнгийг хот дортроо хүссэн газар нь нэмэлт хураамжгүй хүргэж өгдөг шинэ үйлчилгээ нэвтрүүлсэн ба зарим хэрэглэгчийн хүссэн мөнгийг тухайн улсын мөнгөн дэвсгэртүүдээр бүрдүүлэх боломжгүй байв. Үүнээс болж банкны ажил удааширсан тул банкны удирдлагууд танаас тухайн хэрэглэгчийн захиалсан бэлэн мөнгийг гаргаж өгөх боломж байгаа эсэхийг шалгадаг програм бичиж өгөхийг хүссэн.
Жич: Тухайн улсын дэвсгэрт бүр банкинд хангалттай хэмжээгээр байгаа.
Оролт:
Оролтын файлын эхний мөрөнд тухайн улсын дэвсгэртийн тоо N, банкинд ирсэн захиалгын тоо M хоосон зайгаар тусгаарлагдан оршино. Дараагийн N ширхэг мөрөнд дэвсгэртүүдийн хэмжээ болох k1, k2, k3, ..., kN тоонууд, түүний дараагийн M ширхэг мөрөнд хүмүүсийн хүсэж буй мөнгөний хэмжээнүүд болох r1, r2, r3, ... rM тоонууд өгөгдөнө.
Гаралт:
Гаралтын файл M ширхэг мөрөөс тогтох ба мөр тус бүрд тухайн хүний хүссэн мөнгөнд дүнг гаргаж өгч чадах бол YES, чадахгүй бол NO гэсэн утгыг хэвлэн харуулна.
Жишээ 1
Оролт
3 5
4
6
7
5
10
12
3
9
Гаралт
NO
YES
YES
NO
NO
Жишээ 2
Оролт
2 6
3
8
10
12
3
9
Гаралт
NO
YES
YES
NO
YES
YES





No comments:

Post a Comment