Запрашиваемая идея проблемы codeforces (Контрпример 483A) - PullRequest
0 голосов
/ 12 января 2020

Ссылка на проблему: http://codeforces.com/problemset/problem/483/A

Вам нужно найти три числа (a, b, c), таких что l ≤ a

Я хочу узнать идеи решения этой проблемы проблема.

Редактировать:

Вот моя попытка:

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
    int l, r, i, c;
    cin >> l >> r;
    c = r - l;

    if(c <= 50)
    {
        if(c >= 2)
        {
            for(i = l; i <= r; i++)
            {
                if(i % 2 == 0)
                {
                    cout << i << " " << i+1 << " " << i+2 << endl;
                    break;
                }
            }
        }
        else if(c <= 1)
        {
            cout << "-1" << endl;
        }
    }
}

Что не так с моим кодом? Сообщение об ошибке на сайте:

Probably, the solution is executed with error 'uninitiaized value usage' on the line 10

1 Ответ

0 голосов
/ 12 января 2020

Если l и r имеют расстояние меньше 2, то таких триплетов не существует, поскольку мы хотим, чтобы все они были различны.

Если их расстояние равно 2, единственная возможность состоит в том, если выбор равен l, l +1, л + 2. Если l чётно, то это правильный счетчик. Однако, если l нечетно, то такого примера не существует, поскольку l и l + 1 взаимно просты, l + 1 и l + 2 должны быть взаимно простыми, но l и l + 2 не могут иметь 2 в качестве общего множителя. поскольку они являются нечетными числами.

Если расстояние больше 2, просто выберите a, чтобы быть наименьшим четным числом, по крайней мере равным l, и верните (a, a + 1, a + 2). a и a + 2 имеют общий множитель 2.

Правка после попытки показана, вот возможный код C ++:

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
    long long l,r,i,c, first;
    cin >> l >> r;
    c=r-l;
    if ((c<2) || (c==2) && (l%2 == 1)){
        cout << "-1" << endl;
    }
    else{
        first = l + l % 2;
        cout << first << " " <<first+1 << " " << first+2 << endl;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...