Решение задачи Количество участников олимпиады с Acmp

С пояснением   Просмотров: 72


Как известно, на вопрос о том, сколько у него учеников, древнегреческий учёный Пифагор отвечал так: "Половина моих учеников изучает математику, четвертая часть изучает природу, седьмая часть проводит время в молчаливом размышлении, остальную часть составляют 3 девы".


Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int k, m, n, d;
    cin >> k >> m >> n >> d;
    int i = 1;
    bool b = true;
    while(b){
        if(i % k == 0 && i % m == 0 && i % n == 0)
            if(i / k + i / m + i / n + d == i){
                cout << i;
                return 0;
            }
        ++i;
        if(i > 10000){
            cout << -1;
            return 0;
        }
    }

    return 0;
}

         

Администратор Photo Автор: Администратор


Код

k, m, n, d = map(int, input().split())
i = 1
b = True
while b:
    if i % k == 0 and i % m == 0 and i % n == 0:
        if i / k + i / m + i / n + d == i:
            print(i)
            exit()
    i += 1
    if i > 10000:
        print(-1)
        exit()

         

Администратор Photo Автор: Администратор


Я решил эту задачу перебором. Не знаю, можно ли было решить другим способом. Поясню первый пример.
\( \frac{1}{2}x+\frac{1}{4}x+\frac{1}{7}x+3 = x\). Если решить данной уравнение мы получим 28.
А что делаю я? Я перебираю все числа от 1 до 28. При этом число x, которое мы перебираем, должно нацело делиться на k, n, m и в сумме должны получим само число X


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться