Для начала давай посмотрим на года.
1. Если разница между годом рождения и текущим годом больше 16, мы однозначно можем сказать, что человеку уже есть 16.
2. Если разница между годом рождения и текущим годом меньше 16, мы однозначно можем сказать, что человеку ещё нет 16.
Если разница между годом рождения и текущим годом равна 16, мы можем сказать, что у человека день рождения в этом году. Давай глянем на месяц.
1. Если текущий месяц больше месяца рождения, человеку уже есть 16.
2. Если текущий месяц меньше месяца рождения, человеку ещё нет 16.
Если у человека день рождения в этом месяце, давай точно так же глянем на дни.
В итоге мы уже точно знаем, когда у человека день рождения.
#include <bits/stdc++.h>
using namespace std;
int main() {
int d1, m1, y1, d2, m2, y2;
cin >> d1 >> m1 >> y1 >> d2 >> m2 >> y2;
if (y2 - y1 > 16) {
cout << "YES" << endl;
return 0;
} else if (y2 - y1 < 16) {
cout << "NO" << endl;
return 0;
}
if (m2 > m1) {
cout << "YES" << endl;
return 0;
} else if (m2 < m1) {
cout << "NO" << endl;
return 0;
}
if (d2 < d1) {
cout << "NO" << endl;
return 0;
}
cout << "YES" << endl;
return 0;
}
Файл решения прикреплён.
х=7690 - условие
var x, L, M: integer;
begin readln(x);
L:=0;
M:=0;
while x > 0 do begin
1) L:= L + 1 = 1;
M:= M + x mod 10 = 0;
x:= x div 10 = 7 69;
2) L:= L + 1 = 2;
M:= M + x mod 10 = 9;
x:= x div 10 = 7 6;
3) L:= L + 1 = 3;
M:= M + x mod 10 = 15;
x:= x div 10 = 7 ;
4) L:= L + 1 = 4;
M:= M + x mod 10 = 22;
x:= x div 10 = 0;
end;
writeln(L);
write(M);
end.
L = 4; M = 22
Объяснение:
1)L:= L + 1 = 0 + 1 = 1;
M:= M + x mod 10 = 0 + 0 (остаток) = 0;
x:= x div 10 = 7690 : 10 = 769 (остаток 0 здесь не пишется);
2)L:= L + 1 = 1 + 1 = 2;
M:= M + x mod 10 = 0 + 9 (остаток) = 9;
x:= x div 10 = 769 : 10 = 76 (остаток 9 здесь не пишется);
3)L:= L + 1 = 2 + 1 = 3;
M:= M + x mod 10 = 9 + 6 (остаток) = 15;
x:= x div 10 = 76 : 10 = 7 (остаток 6 здесь не пишется);
4)L:= L + 1 = 3 + 1 = 4;
M:= M + x mod 10 = 15 + 7 (остаток) = 22;
x:= x div 10 = 7 : 10 = 0 (остаток 7 здесь не пишется);