~/algor $ cat masalalar/algor-bot-va-xabarlar
ALGOR Bot va Xabarlar
Iqbolshoh ALGOR platformasi dasturchilari uchun yangi Telegram bot tizimini ishga tushirmoqda.
Telegram cheklovlariga ko'ra, bot orqali bitta xabarda ko'pi bilan K ta belgi yuborish mumkin. Agar yuborilishi kerak bo'lgan matn uzunligi K dan ortiq bo'lsa, bot uni ketma-ket bir nechta paketlarga ajratib jo'natadi.
Masalan, agar umumiy xabar uzunligi N = 10 ta belgi, har bir paket sig'imi esa K = 3 ta belgi bo'lsa:
- 1-paket: 3 ta belgi;
- 2-paket: 3 ta belgi;
- 3-paket: 3 ta belgi;
- 4-paket (oxirgi paket): 1 ta belgi.
Jami 4 ta paket jo'natiladi va oxirgi paketda 1 ta belgi bo'ladi.
Agar N = 15 va K = 5 bo'lsa, jami 3 ta paket yuboriladi va oxirgi paketda to'liq 5 ta belgi bo'ladi.
Sizga umumiy belgilar soni N va bitta paket sig'imi K beriladi. Bot jami nechta paket yuborishini va eng so'nggi paketda nechta belgi bo'lishini aniqlang.
Kiruvchi ma'lumotlar
Yagona qatorda ikkita butun son: N va K ($1 \le N \le 10^{18}, 1 \le K \le 10^9$) kiritiladi.
Chiquvchi ma'lumotlar
Bitta qatorda probel bilan ajratilgan ikkita butun son: jami paketlar soni va eng oxirgi paketdagi belgilar sonini chiqaring.
Izoh
Eslatma: N qiymati $10^{18}$ gacha yetishi mumkin, shuning uchun 64-bitli butun son turlaridan (C++ da long long, Python da standart int) foydalaning.
Misollar
10 3
4 1
15 5
3 5
1 5
1 1
Yechim tahlili
Avval o'zingiz yechib ko'ring — tahlilni o'qish o'rganishga yordam beradi, lekin javobni tayyor beradi.
(N + K - 1) / K formulasi bilan hisoblash mumkin.
2. Oxirgi paketdagi belgilar soni:
- Agar N soni K ga qoldiqsiz bo'linsa (N % K == 0), oxirgi paket ham to'liq K ta belgidan iborat bo'ladi.
- Aks holda, oxirgi paketda qoldiq miqdoridagi belgilar, ya'ni N % K ta belgi bo'ladi.
$N \le 10^{18}$ bo'lganligi uchun C++ da long long turidan foydalanish shart.
```cpp
#include
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n, k;
if (cin >> n >> k) {
long long packets = (n + k - 1) / k;
long long last = (n % k == 0) ? k : (n % k);
cout