17. num = 23
# 1 вариант - преобразуем число в строку, разбиваем на цифры
string = str(num)
if int(string[0]) < int(string[1]): # если первая цифра меньше второй
string = string[1] + string[0] #меняем их местами
num = int(string)
# 2 вариант - остатком от деления на степени 10
# остаток от деления на 10 - первая цифра числа, остаток от деления на 100 - вторая и так далее
if num % 10 < num % 100: #если первая цифра меньше второй
num = num % 10 * 10 + num % 100
21.
num = 1234
# 1 вариант - преобразуем число в список и находим сумму цифр
lst = [int(n) for n in string] # учили списковое включение? если нет, смотри следующий код
lst = []
for n in string:
lst.append(int(n)) # это все если не учили списковое включение
# второй вариант - остатки от деления на 10 суммируем вручную
first = num % 10
sec = num % 100
th = num % 1000
four = num % 10000
result = first + sec + th + four
result = sum(n)
Объяснение:
Функция sum() возвращает сумму элементов списка
Если будут вопросы - пиши
Если пригодилось - оцени ответ ;)
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
return R;
int main()
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
17. num = 23
# 1 вариант - преобразуем число в строку, разбиваем на цифры
string = str(num)
if int(string[0]) < int(string[1]): # если первая цифра меньше второй
string = string[1] + string[0] #меняем их местами
num = int(string)
# 2 вариант - остатком от деления на степени 10
# остаток от деления на 10 - первая цифра числа, остаток от деления на 100 - вторая и так далее
if num % 10 < num % 100: #если первая цифра меньше второй
num = num % 10 * 10 + num % 100
21.
num = 1234
# 1 вариант - преобразуем число в список и находим сумму цифр
string = str(num)
lst = [int(n) for n in string] # учили списковое включение? если нет, смотри следующий код
lst = []
for n in string:
lst.append(int(n)) # это все если не учили списковое включение
# второй вариант - остатки от деления на 10 суммируем вручную
first = num % 10
sec = num % 100
th = num % 1000
four = num % 10000
result = first + sec + th + four
result = sum(n)
Объяснение:
Функция sum() возвращает сумму элементов списка
Если будут вопросы - пиши
Если пригодилось - оцени ответ ;)
#include <iostream>
typedef long long ll;
using namespace std;
bool ll_is_valid(ll t, ll N, ll x, ll y)
{
return t / x + (t - x) / y >= N;
}
ll f(ll N, ll x, ll y)
{
ll R = 1;
while (!ll_is_valid(R,N,x,y)) R *= 2;
ll L = R / 2;
while(R - L > 1)
{
ll M = (L + R) / 2;
if (!ll_is_valid(M,N,x,y)) {L = M;}
else {R = M;}
}
return R;
}
int main()
{
ll N,x,y;
cin >> N >> x >> y;
if(x > y) swap( x, y );
cout << f(N, x, y) << std::endl;
}