Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12

Найти минимальное целое число x удовлетворяющее равентству x/a-x/b=c

24.02.2020, 17:51. Показов 1470. Ответов 16
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите оптимизировать код на С ++


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int a,b,c,x,buff3;
    cin >> a >> b >> c;
    int min = 1 , max = 2;
    while (1)
    {
        x = floor((max+min)/2);
        buff3= floor(x/a-x/b);
        if (buff3<c)
        {
            max = (max+min)*2;
        }
        if (buff3>c)
        {
            min = x;
        }
        if (buff3==c)
        {
            cout << x;
            return 0;
        }
    }
}
Добавлено через 2 минуты
В задаче нужно найти минимально возможное целое число Х что б уравнение x/a-x/b=c было правильным.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2020, 17:51
Ответы с готовыми решениями:

Получить наименьшее целое число удовлетворяющее заданному условию
Дано натуральное число N. Получить наименьшее целое число k, при котором 2K&gt;N. Комментариями пожалуйста..

В заданной строке найти минимальное и максимальное целое число
В заданной строке найти минимальное и максимальное целое число (числа могут быть отрицательными, в этом случае знак минус перед ними...

Минимальное положительное целое число
Братья,нужна помощь. Вычислить минимальное положительное целое число, которое не является точно представимым в типе double. Как найти...

16
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2020, 18:12
Что-то код не решает указанную задачу,
например при a=2, b=4, c=3 он циклится c Max=30, min=29

Предлагаю такой вариант:
C++
1
2
3
4
5
6
7
int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    int x = a * b * c / double(b - a);
    cout << x << endl;
}
Останется проверить значения меньшие полученных
Ну, например, так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    int x = a * b * c / (b - a);
    for (int i = 1; i <= x; i++)
    {
        if (i / a - i / b == c)
        {
            cout << i << endl;
            system("pause");
            return 0;
        }
    }
    cout << "No solution" << endl;
    system("pause");
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 18:17
BananaKinggg, линейное уравнение в зависимости от коэффициентов может иметь одно решение, бесконечно много решений или не иметь решений.

может у Вас в условии неравенство ?
0
Злостный нарушитель
 Аватар для Verevkin
10357 / 5772 / 1274
Регистрация: 12.03.2015
Сообщений: 26,668
24.02.2020, 18:33
Я хз, интересная разминка для спинного мозга.
Ахтунг! Не отлаживал, писал на заборе!
C++
1
2
3
4
5
6
bool foo(int a, int b, int c, int &x)
{
  if ((a == b) || (a * b * c) % (a - b)) return false; // нет решений
  x = (a * b * c) / (a - b); // найдено
  return true;
}
Рассуждения:

Поправьте, если налажал.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 18:40
zss, можете объяснить, что Вы решаете ? уже сообщал 3 варианта решения линейного уравнения. ни при одном из них минимальное находить не нужно. явно косяк в условии. или я что-то не понимаю ?
0
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12
24.02.2020, 18:43  [ТС]
1D. Вечерняя прогулянка
Обмеження: 1 сек., 256 МiБ
Как то вы прогулювались по вечернему Львову и рассматривали разнообразные вивески и витрины магазинов. Между другого, вы увидели интересные магазины, на которых было написано Exchange, которые предлагал купить 1 доллар за a гривень, или 1 евро за b гривень. Вам, как и всем другим, известно, что доллар Менее ценная валюта, чем евро. Ви мгновенно заинтересовались, какое наименшее количество гривень вы должны иметь, чтобы могти купить ровно на c доларов больше, чем евро.Формально, вам Нужна найти наименьшее такое число x, что x/a - x/b = c.
Входные данные единственной строке заданы три числа через пробел a, b c.
Выходны данные х (Виведите одно целое число ответ на задачу.)
Ограничение 1≤a, b, c≤10^6, a <b.
Пример:
Вводим: Выводим:
3, 4, 2 15
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2020, 18:50
Yetty, как я понял, уравнение надо решить в целых числах с отбрасыванием дробной части при делении.
Например, при a=2,b=4,c=3, подходят значения x=10,11,12.
Соответственно, удовлетворяет условию задачи x=10, а не 12 (т.к. оно самое маленькое).
0
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12
24.02.2020, 18:52  [ТС]
Да, но суть в том что у меня код уже все это делает но я не успеваю по времени. И я не знаю как бы я мог оптимизировать его. В задаче стоит лимит 1 с в худшем случаи, а у меня в худшем случаем выходит 1,03
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2020, 19:03
Цитата Сообщение от BananaKinggg Посмотреть сообщение
у меня код уже все это делает
А попробуйте a=2, b=4, c=3

з.ы. Задача не очень соответствует действительности, т.к.
1. a,b как правило дробные,
2. остаток от деления не пропадает, он возвращается покупателю как сдача.
0
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12
24.02.2020, 19:15  [ТС]
Не выбивает ответ. Но на сайте откуда я взял задачку пишет что ошибка не в коде а во времени, но теперь я что то сомневаюсь
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2020, 19:34
Цитата Сообщение от BananaKinggg Посмотреть сообщение
ошибка не в коде а во времени
Если программа циклится - это тоже ошибка времени
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 20:05
Цитата Сообщение от BananaKinggg Посмотреть сообщение
какое наименьшее количество гривень вы должны иметь, чтобы могтли купить ровно на c долларов больше, чем евро
поправьте если я ошибаюсь:
допустим Вы хотели купить на 5 долларов больше, чем евро, например:
15 долларов и 10 евро
или
150 долларов и 145 евро
очевидно, что чем меньше количество евро тем меньше гривен Вы должны иметь (самое меньшее значение 0 евро). т.е задача сводится к вычислению суммы для покупки 5 долларов. т.е. решение:
C++
1
unsigned long long sum=a*с;
и объясните пожалуйста кто разобрался, как находятся числа примера
Цитата Сообщение от BananaKinggg Посмотреть сообщение
Вводим: Выводим:
3, 4, 2 15
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
24.02.2020, 20:10
Yetty, опять Вы усложнили задачу.
Имеется ввиду не И, а ИЛИ.
Покупаем или доллары или евро.
т.е. вопрос в том, на сколько больше долларов получится, если вместо евро купить доллары.
2
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2020, 20:23
zss, задача конечно так сформулирована, что как хочешь так и понимай так Ваш код решает задачу если ИЛИ ? только строку system("pause"); убрать
0
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12
24.02.2020, 20:25  [ТС]
Например цена доллара А=3, цена евро В = 4, и нам нужно узнать минимальное число х, что б за него мы могли купить на С=2 долларов больше чем евро. И мы берем например за Х =12. 12/3-12/4=4-3=1 а не равно С. А если взять за Х=15 то получится 15/3-15/4=5-3.75=2 и 2 равно С. В последнем уравнении вышло 2 потому что мы покупаем только целыми купюрами без монет поэтому число заокругливаеться к меншему тоесть к 3 и получаеться 5 -3 = 2 = С. Суть по идеи такая.

Если чесно я сам немного в шоке от задачи ведь это одна из 15 задач на 2 недели для 1 курса. По идеи ее нужно как-то решать бинарным поиском.
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
24.02.2020, 21:30
Verevkin,
x/a-x/b=c
ab(x/a-x/b)=abc
abx/a-abx/b=abc
x(b-a)=abc
x=abc/(b-a)

Добавлено через 5 минут
b=2 и а=1 -> x=2c
0
0 / 0 / 0
Регистрация: 24.02.2020
Сообщений: 12
25.02.2020, 00:06  [ТС]
Мне нужно просто оптимизировать мой код

Там тип деление заменить на отнимание или типа забрать какойто иф что то типа того
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2020, 00:06
Помогаю со студенческими работами здесь

Найти число, удовлетворяющее условию
Доброго времени суток. Есть задача: Найти минимальное число, большее заданного, равное сумме своих цифр в n-ной степени. Например,...

Дано целое число N (> 0). Найти сумму N2 + (N + 1)2+ (N + 2)2+ … + (2*N)2 (целое число)
Дано целое число N (&gt; 0). Найти сумму N2 + (N + 1)2+ (N + 2)2+ … + (2*N)2 (целое число).подскажите как решается или подскажите где можно...

Найти по числу z число x удовлетворяющее заданному условию
Найти по числу z число x такое, что z = (2x +1)*2^y для некоторого y. Использовать прибавление(уменьшение) на 1, =, &lt;, +, -. Хотя...

Дано целое число (N>0) найти наибольшее целое числа k, квадрат которого не превосходит N:k^2<=N
Помогите пожалуйста сделать задачу. Нужно сделать на С++. Вот условие: Дано целое число (N&gt;0) найти наибольшее целое числа k,...

Дано целое число N. Определить максимальное минимальное произведение соседних цифр в числе N
Дано целое число N. Определить максимальное минимальное произведение соседних цифр в числе N.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru