Asosiy qismga o'tish

~/algor $ cat masalalar/palindrom-vaqt

Palindrom Vaqt

I Muallif: Iqbolshoh Ilhomjonov
Oson 1000 ms 256 MB Urinishlar
Ulashish
Mavzular: String

Dasturchi musobaqaga tayyorgarlik ko'rib, kechasi kod yozayotgan edi. Xonadagi elektron soat 24 soatlik formatda vaqtni HH:MM ko'rinishida ko'rsatadi ($00 \le HH \le 23, 00 \le MM \le 59$).

Dasturchi soatga qarab, Palindrom vaqt tushunchasiga qiziqib qoldi. Palindrom vaqt — bu o'ngdan chapga ham, chapdan o'ngga ham bir xil o'qiladigan vaqtdir (ikki nuqta : belgisi hisobga olinmaydi).
Masalan:

  • 05:50 — palindrom;
  • 12:21 — palindrom;
  • 23:32 — palindrom;
  • 00:00 — palindrom.
    Lekin 12:12 yoki 21:11 palindrom emas.

Hozir soat HH:MM ni ko'rsatmoqda. Eng yaqin kelayotgan keyingi palindrom vaqtgacha necha daqiqa kutish kerak?
E'tibor bering: agar hozirgi vaqtning o'zi allaqachon palindrom bo'lsa, kutish shart emas va javob 0 bo'ladi.

Kiruvchi ma'lumotlar

Yagona qatorda HH:MM formatida hozirgi vaqt kiritiladi ($00 \le HH \le 23, 00 \le MM \le 59$).

Chiquvchi ma'lumotlar

Eng yaqin kelayotgan palindrom vaqtgacha qolgan daqiqalar sonini chiqaring.

Izoh

1-namuna:
Kirish: 12:21 -> Chiqish: 0

2-namuna:
Kirish: 23:59 -> Chiqish: 1 (00:00 gacha 1 daqiqa)

3-namuna:
Kirish: 13:20 -> Chiqish: 11 (13:31 gacha 11 daqiqa)

Misollar

Kirish #1
12:21
Chiqish #1
0
Kirish #2
23:59
Chiqish #2
1
Kirish #3
13:20
Chiqish #3
11
Yechim tahlili

Avval o'zingiz yechib ko'ring — tahlilni o'qish o'rganishga yordam beradi, lekin javobni tayyor beradi.

### Masala tahlili (Problem B) 24 soatlik kunda jami $24 \times 60 = 1440$ daqiqa mavjud. Hozirgi vaqtdan boshlab har bir daqiqani bittalab oshirib boramiz: Har safar HH va MM ning raqamlari HH[0] == MM[1] va HH[1] == MM[0] ekanligini tekshiramiz. Eng ko'pi bilan 1440 ta qadamdan so'ng albatta palindrom vaqt uchraydi. ```cpp #include #include #include using namespace std; bool isPalindrome(int h, int m) { int h1 = h / 10, h2 = h % 10; int m1 = m / 10, m2 = m % 10; return (h1 == m2 && h2 == m1); } int main() { string s; if (cin >> s) { int h = stoi(s.substr(0, 2)); int m = stoi(s.substr(3, 2)); int wait = 0; while (!isPalindrome(h, m)) { wait++; m++; if (m == 60) { m = 0; h = (h + 1) % 24; } } cout

Yechim yuborish uchun tizimga kiring

Ro'yxatdan o'tish bepul va bir daqiqa oladi.