Летняя практика ИВТ УлГТУ

Материал из Олимпиадное программирование в УлГТУ
Версия от 06:24, 7 июля 2013; Ctrlalt (обсуждение | вклад) (Новая страница: «== Первый этап (8 — 9 июля): знакомство с тестирующей системой и задачами == [[Файл:acmp_registrat…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Первый этап (8 — 9 июля): знакомство с тестирующей системой и задачами

Образец заполнения регистрационной формы ACMP

Студентам предлагается зарегистрироваться и попробовать решить несколько задач в открытой тестирующей системе ACMP.

При регистрации на сайте ACMP принято указывать фамилию, имя и отчество на русском языке. Для того, чтобы облегчить организаторам практики поиск вашей учётной записи, добавьте после имени метку «[УлГТУ]», а также укажите значения полей «Город» и «Учреждение». Пример заполнения регистрационной формы приведён справа.

После регистрации прежде всего следует ознакомиться с разделами Работа в системе и Новичкам.

Рекомендуется решать задачи в порядке возрастания сложности. Упорядоченный по сложности список задач доступен по ссылке. Большинство простых задач имеют разбор решений.

Подробный пример работы с системой ACMP

Рассмотрим процесс решения на примере задачи №274 «Дружные числа».

Логика решения достаточно проста: для каждого из проверяемых чисел опишем логический массив, в котором i-ый элемент равен 1, если число содержит цифру i. Два числа являются дружными тогда и только тогда, когда соответствующие им массивы поэлементно равны. Ниже показаны функции для определения логических массивов и их сравнения.

void getDigits(int n, bool dn[]) {
    while (n) {
        dn[n % 10] = true;
        n /= 10;
    }
}
 
bool compareDigits(bool da[], bool db[]) {
    for (int i = 0; i < 10; i++)
        if (da[i] != db[i])
            return false;
    return true;
}

Основная функция может иметь следующий вид:

int main() {
    int testCnt, a, b;
    bool da[10], db[10];
    scanf("%d", &testsCnt);
    for (int i = 0; i < testsCnt; i++) {
        scanf("%d%d", &a, &b);
        getDigits(a, aDig);
        getDigits(b, bDig);
        printf("%s\n", compareDigits(da, db) ? "YES" : "NO");
    }
    return 0;
}