Чтобы решить эту задачу, воспользуемся методом программирования:
1) напишем функцию, которая получает число в качестве аргумента и моделируя процесс преобразивания из условия возвращает результат:
int f(int n){
int d[4];
for(int i = 0; i < 4; i++){
d[3 - i] = n % 10;
n /= 10;
}
int u = d[0] + d[3], v = d[1] + d[2];
string res;
u < v ? res += to_string(u) + to_string(v) : res += to_string(v) + to_string(u);
return stoi(res);
}
2) так как нам нужно найти наибольшее четырехзначаное число, дающее результат 815, то запускаем цикл, идущий от самого большого четырехзначного числа(9999) до самого маленького(1000), и как только нам встретится число, дающее в результате нужное число(815), выведем его в консоль, и закончим работу программы, то, что выведет программа и будет ответом:
полный код(результат работы на фото) :
#include <iostream>
using namespace std;
int f(int n){
int d[4];
for(int i = 0; i < 4; i++){
d[3 - i] = n % 10;
n /= 10;
}
int u = d[0] + d[3], v = d[1] + d[2];
string res;
u < v ? res += to_string(u) + to_string(v) : res += to_string(v) + to_string(u);
Надо понимать что это время (2:00) это именно продолжительность рейса. То есть взлет в 21:30 и через 2:00 посадка в Иркутске. В Новосибирске в это время будет 23:30, но в самом Иркутске будет 1:30
Чтобы решить эту задачу, воспользуемся методом программирования:
1) напишем функцию, которая получает число в качестве аргумента и моделируя процесс преобразивания из условия возвращает результат:
int f(int n){
int d[4];
for(int i = 0; i < 4; i++){
d[3 - i] = n % 10;
n /= 10;
}
int u = d[0] + d[3], v = d[1] + d[2];
string res;
u < v ? res += to_string(u) + to_string(v) : res += to_string(v) + to_string(u);
return stoi(res);
}
2) так как нам нужно найти наибольшее четырехзначаное число, дающее результат 815, то запускаем цикл, идущий от самого большого четырехзначного числа(9999) до самого маленького(1000), и как только нам встретится число, дающее в результате нужное число(815), выведем его в консоль, и закончим работу программы, то, что выведет программа и будет ответом:
полный код(результат работы на фото) :
#include <iostream>
using namespace std;
int f(int n){
int d[4];
for(int i = 0; i < 4; i++){
d[3 - i] = n % 10;
n /= 10;
}
int u = d[0] + d[3], v = d[1] + d[2];
string res;
u < v ? res += to_string(u) + to_string(v) : res += to_string(v) + to_string(u);
return stoi(res);
}
int main(){
for(int i = 9999; i >= 1000; i--){
if(f(i) == 815){
cout << i;
return 0;
}
}
}
ответ: 9806
Объяснение:
(Время прилета)-(время вылета)+(часовой пояс Новосибирска 3)-(часовой пояс относительно Москвы)
Если время прилета меньше времени вылета то +24 часа (это значит прилет происходит в следующие сутки после вылета)
Например рейс в Астану. Вылет 13:40, Прилет 14:35, пояс относительно Москвы =2
14:35-13:40+3-2=0:55+3-2=1:55
или рейс в Иркутск Вылет 21:30, Прилет 1:30, пояс относительно Москвы =5
1:30+24:00-21:30+3-5=25:30-21:30+3-5=4:00+3-5=2:00
Надо понимать что это время (2:00) это именно продолжительность рейса. То есть взлет в 21:30 и через 2:00 посадка в Иркутске. В Новосибирске в это время будет 23:30, но в самом Иркутске будет 1:30