Сурагчдын суудал хуваарилалт (2015.12)


Submit solution

Points: 5
Time limit: 1.0s
Memory limit: 512M

Author:
Problem type
Allowed languages
C++

Нэг ангид нийт N сурагч байна. Тэдгээрээс M нь охид бөгөөд үлдсэн нь хөвгүүд юм.

Багш сурагчдыг нэг эгнээнд суулгахдаа дараах дүрмийг баримтлахыг хүсэв:

Ямар ч тохиолдолд K-аас олон охин дараалан зэрэгцэж сууж болохгүй.

Өөрөөр хэлбэл, K+1 болон түүнээс олон дараалсан охин байж болохгүй.

Сурагч бүр хоорондоо ялгаатай гэж үзвэл, дээрх нөхцөлийг хангах бүх боломжит суулгалтын тоог ол.

Хариуг 1,000,000,007 (10⁹+7) тоонд хуваасны үлдэгдлээр гарга.

Оролт:

Оролтын файлд нэг мөрөнд гурван бүхэл тоо өгөгдөнө: N M K

  • N — нийт сурагчдын тоо
  • M — охидын тоо
  • K — дараалан сууж болох охидын дээд хэмжээ

Гаралт:

Нөхцөлийг хангах суулгалтын боломжит тоог нэг бүхэл тоогоор хэвлэнэ.

Хязгаарлалтууд:

  • 1 ≤ N ≤ 1,000,000
  • 0 ≤ M ≤ N
  • 0 ≤ K ≤ N
Дэд бодлого
Дэд бодлого оноо Хязгарлалт Тайлбар
1 Дэд бодлого -1 1 N<=10, K=1
2 Дэд бодлого -2 1 N<=20, K=1
3 Дэд бодлого -3 1 N<=100,K=1
4 Дэд бодлого -4 1 N<=100
5 Дэд бодлого -5 1 Нэмэлт хязгаарлалтгүй

Жишээ:

Оролт-1
3 2 1
Гаралт-1
2
Тайлбар

Нийт 3 сурагчийн 2 нь охин.

K = 1 тул 2 охин дараалан сууж болохгүй.

Боломжит байрлалууд:

  • Охин – Хүү – Охин
  • Хүү – Охин – Охин ❌ (2 охин дараалан → болохгүй)
  • Охин – Охин – Хүү ❌ (2 охин дараалан → болохгүй)

Гэхдээ сурагчид ялгаатай тул:

  • Охидыг хооронд нь сольж болно → 2 янз

Иймд хариу = 2

Оролт-1
4 2 2
Гаралт-1
12

Comments

There are no comments at the moment.