#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;
}
Поделитесь своими знаниями, ответьте на вопрос:
Найдите все двузначные числа, сумма цифр которых не меняется при умножении числа на 2, 3, 4, 5, 6, 7, 8 и 9. нужно нарисовать алгоритм (блок-схему) и написать программу в visual basic-e. или хотя бы что-то из этого, .
'Сумма цифр в числе n
Dim s As Integer
s = 0
Do While n <> 0
s = s + n Mod 10
n = Int(n / 10)
Loop
ds = s
End Function
Function IsGood(n As Integer) As Boolean
'Сохраняется ли сумма цифр при умножении числа на 2,3,..9 ?
Dim etalon As Integer, k As Integer
etalon = ds(n)
IsGood = True
k = 2
Do While IsGood And k < 10
IsGood = (ds(n * k) = etalon)
k = k + 1
Loop
End Function
Sub aaa()
Dim i As Integer, s As String
s = ""
For i = 10 To 99
If IsGood(i) Then s = s + Str(i)
Next i
MsgBox s
End Sub
Тестовое решение:
18 45 90 99