#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;
Объяснение:
#include <vector>
setlocale(LC_ALL, "RU");
int N;
cin >> N;//массив на N элементов
vector<int>a;
for (int i = 0; i < N; i++)
a.push_back(rand()%100);// заполнение массива числами от 0 до 100
cout << a[i] << " ";
cout << endl;
bool flag=false;
int number;
for (int i = 0; i < N; i++) {
auto r = find(a.begin(), a.end(),a[i]);// функция стандартной библиотеки для поиска
if (r != a.end()&&r-a.begin()!=i)
number = r - a.begin();// номер элемента массива с одинаковым значением
flag = true;
break;
if (flag)
cout <<"В массиве присутствуют элементы с одинаковыми значениями. Одним из равных значений является: "<<a[number];
else
cout << "В массиве не присутствуют элементы с одинаковыми значениями";
#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;
}
Объяснение:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
int N;
cin >> N;//массив на N элементов
vector<int>a;
for (int i = 0; i < N; i++)
a.push_back(rand()%100);// заполнение массива числами от 0 до 100
for (int i = 0; i < N; i++)
cout << a[i] << " ";
cout << endl;
bool flag=false;
int number;
for (int i = 0; i < N; i++) {
auto r = find(a.begin(), a.end(),a[i]);// функция стандартной библиотеки для поиска
if (r != a.end()&&r-a.begin()!=i)
{
number = r - a.begin();// номер элемента массива с одинаковым значением
flag = true;
break;
}
}
if (flag)
cout <<"В массиве присутствуют элементы с одинаковыми значениями. Одним из равных значений является: "<<a[number];
else
cout << "В массиве не присутствуют элементы с одинаковыми значениями";
}