ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам |
К задаче N

Проект МЦНМО
при участии
школы 57
Фильтр
Сложность с по   Класс с по  
Выбрано 2 задачи
Версия для печати
Убрать все задачи

Дан одномерный массив. Все его элементы, не равные нулю, переписать (сохраняя их порядок) в начало массива, а нулевые элементы - в конец массива (новый массив не заводить).

Вниз


Докажите, что серединные перпендикуляры к сторонам треугольника пересекаются в одной точке.

Вверх

Задачи

Страница: 1 2 3 4 5 6 7 >> [Всего задач: 55]      



Задача 76209

Темы:   [ Знакомство с циклами ]
[ Задачи с целыми числами ]
[ НОД и НОК. Алгоритм Евклида ]
Сложность: 2-

Даны два натуральных числа a и b, не равные нулю одновременно. Вычислить НОД(a,b) — наибольший общий делитель а и b.

Решение

Вариант 1.

        if a > b then begin
        | k := a;
        end else begin
        | k := b;
        end;
        {k = max (a,b)}
        {инвариант: никакое  число, большее k, не является
          общим делителем}
        while not ((a mod k = 0) and (b mod k = 0)) do begin
        | k := k - 1;
        end;
        {k - общий делитель, большие - нет}
Вариант 2 (алгоритм Евклида). Будем считать, что НОД(0,0)=0. Тогда НОД(a,b) = НОД(a-b,b) = НОД(a,b-a); НОД(a,0) = НОД(0,a) = a для всех a,b≥0.
         m := a; n := b;
        {инвариант: НОД (a,b) = НОД (m,n); m,n >= 0 }
        while not ((m=0) or (n=0)) do begin
        | if m >= n then begin
        | | m := m - n;
        | end else begin
        | | n := n - m;
        | end;
        end;
        {m = 0 или n = 0}
        if m = 0 then begin
        | k := n;
        end else begin {n = 0}
        | k := m;
        end;
Прислать комментарий

Задача 76210

Темы:   [ Знакомство с циклами ]
[ Задачи с целыми числами ]
[ НОД и НОК. Алгоритм Евклида ]
Сложность: 2-

Написать модифицированный вариант алгоритма Евклида, использующий соотношения НОД(a,b) = НОД(a mod b, b) при a≥b, НОД(a,b) = НОД(a, b mod a) при b≥a.
Прислать комментарий


Задача 76219

Темы:   [ Знакомство с циклами ]
[ Условный оператор ]
[ Задачи с целыми числами ]
Сложность: 2-

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

Решение

Во втором варианте решения вместо l:=l+1 можно написать

                if l*l > k then begin
                | l:=k;
                end else begin
                | l:=l+1;
                end;
Прислать комментарий

Задача 64126

 [Степень двойки?]
Темы:   [ Знакомство с циклами ]
[ Условный оператор ]
Сложность: 2
Классы: 8

Является ли число степенью двойки?

Вводится число. Напечатать YES, если оно является степенью двойки,
NO - иначе

Пример входного файла
8

Пример выходного файла
YES



Пример входного файла
22

Пример выходного файла
NO

Подсказка

Задачи 104-106 - задачи на использование цикла WHILE.

Решение

Скачать архив тестов
Прислать комментарий


Задача 64127

 [Сумма цифр]
Темы:   [ Знакомство с циклами ]
[ Задачи с целыми числами ]
Сложность: 2
Классы: 8

Посчитать сумму цифр числа

Вводится число. Вывести сумму его цифр

Пример входного файла
157

Пример выходного файла
13

Решение

Скачать архив тестов
Прислать комментарий


Страница: 1 2 3 4 5 6 7 >> [Всего задач: 55]      



© 2004-... МЦНМО (о копирайте)
Пишите нам