~/algor $ cat masalalar/palindrom-vaqt
Palindrom Vaqt
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.
Lekin12:12yoki21:11palindrom 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
12:21
0
23:59
1
13:20
11
Yechim tahlili
Avval o'zingiz yechib ko'ring — tahlilni o'qish o'rganishga yordam beradi, lekin javobni tayyor beradi.
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