1. Опишите структуру clock, которую можно использовать для хранения значений времени в виде дней, часов, минут и секунд. Для этой структуры реализуйте следующие функции: clock tick(clock c); // увеличивает время на одну секунду
clock add(clock c1, clock c2); // складывает два времени
clock sub(clock c1, clock c2); // вычитает из одного времени другое
clock mult(unsigned m, clock c); // умножает время на число
void print(clock c); // выводит на экран время в виде дни : часы : минуты : секунды
Помните, что значения в переменных, хранящих минуты и секунды, должны находится в диапазоне от 0 до 59, а в переменной, хранящей часы, – от 0 до 23!
Вот алгоритм, который это делает:
использовать Робот
алг
нач
|---2---
закрасить
вверх
закрасить
вверх
закрасить
вверх
вверх
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
влево
закрасить
вправо
вниз
вниз
закрасить
влево
закрасить
вправо
вправо
вправо
|---0---
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
влево
закрасить
вправо
вправо
вправо
|---0---
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вправо
закрасить
вправо
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
влево
закрасить
вправо
вправо
вправо
|---6---
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вправо
закрасить
вправо
закрасить
вниз
вниз
закрасить
влево
закрасить
вправо
вниз
закрасить
вниз
закрасить
влево
закрасить
вправо
вправо
вправо
кон
Так как тут мизерные ограничения, то для решения конкретно этой задачи можно просто проифать : если n == 5 || n == 125 , то YES , иначе NO
НО мы же не пальцем деланные, да? Поэтому решим задачку и для больших N, с асимптотикой log2(N), используя бинпоиск :
#include < iostream >
#include < cmath >
using namespace std;
bool check(int n){
int l = 0, r = 15;
while(l <= r){
int m = (l + r)/2;
if(pow(5,m) < n)
l = m + 1;
else if(pow(5,m) > n)
r = m - 1;
else
return true;
}
return false;
}
signed main() {
int N;
cin >> N;
check(N) ? cout << "YES" : cout << "NO";
}