4) Трудная, так сразу не сообразишь. Обрати внимание вот на что: Чтобы из листа выпал кусок, вырезанные клетки должны образовать замкнутую область, внутри которой есть хоть одна клетка. Как это вычислить программно - я не знаю. Если M = N*N, то вырезаны ВСЕ клетки, и количество кусков равно 0. 5) Проще. Тут дело вот в чем: если переставить цифры, а потом из одного числа вычесть другое, то результат всегда будет делиться на 9. То есть в нем сумма цифр делится на 9. После того, как вычеркнули ненулевую цифру, нужно сумму цифр разделить на 9 с остатком. Вычеркнутая цифра - это дополнение остатка до 9. Например, взяли число 345987, переставили цифры, получилось 937458. Вычитаем: 937458 - 345987 = 591471 = 9*65719. Сумма цифр разности 5 + 9 + 1 + 4 + 7 + 1 = 27 = 3*9. Если вычеркнуть, например, 4, то сумма 5 + 9 + 1 + 7 + 1 = 23 = 2*9 + 5. Вычеркнутая цифра равна 9 - 5 = 4. Если бы мы вычеркнули 9, то сумма цифр стала бы равна 18 = 2*9 + 0. Вычеркнутая цифра равна 9 - 0 = 9. На бейсике программа будет примерно такая: Sub Prog5 Dim N As Long, K As Integer, i As Integer, S As Integer Open "D:\Input.txt" For Input As #1 ' Открываем файл #1 на чтение Open "D:\Output.txt" For Output As #2 ' Открываем файл #2 на запись Input #1, N ' Вводим число из файла в переменную N S = 0 ' Сумма цифр числа равна 0 Do While N > 0 ' Цикл, пока число N > 0 S = S + N Mod 10 ' К сумме цифр прибавляем последнюю цифру. N = Int (N / 10) ' Целочисленное деление на 10, убираем последнюю цифру Loop ' В итоге N = 0, S = сумме цифр числа N K = S Mod 9 ' K = остатку от деления суммы цифр на 9 K = 9 - K ' теперь K = дополнению остатка до 9, т.е. вычеркнутой цифре Print#2, K ' Выводим K в выходной файл Close ' Закрываем все файлы End Sub
Answers & Comments
Verified answer
4) Трудная, так сразу не сообразишь. Обрати внимание вот на что:Чтобы из листа выпал кусок, вырезанные клетки должны образовать замкнутую область, внутри которой есть хоть одна клетка. Как это вычислить программно - я не знаю.
Если M = N*N, то вырезаны ВСЕ клетки, и количество кусков равно 0.
5) Проще. Тут дело вот в чем: если переставить цифры, а потом из одного числа вычесть другое, то результат всегда будет делиться на 9.
То есть в нем сумма цифр делится на 9.
После того, как вычеркнули ненулевую цифру, нужно сумму цифр разделить на 9 с остатком. Вычеркнутая цифра - это дополнение остатка до 9.
Например, взяли число 345987, переставили цифры, получилось 937458.
Вычитаем: 937458 - 345987 = 591471 = 9*65719.
Сумма цифр разности 5 + 9 + 1 + 4 + 7 + 1 = 27 = 3*9.
Если вычеркнуть, например, 4, то сумма 5 + 9 + 1 + 7 + 1 = 23 = 2*9 + 5.
Вычеркнутая цифра равна 9 - 5 = 4.
Если бы мы вычеркнули 9, то сумма цифр стала бы равна 18 = 2*9 + 0.
Вычеркнутая цифра равна 9 - 0 = 9.
На бейсике программа будет примерно такая:
Sub Prog5
Dim N As Long, K As Integer, i As Integer, S As Integer
Open "D:\Input.txt" For Input As #1 ' Открываем файл #1 на чтение
Open "D:\Output.txt" For Output As #2 ' Открываем файл #2 на запись
Input #1, N ' Вводим число из файла в переменную N
S = 0 ' Сумма цифр числа равна 0
Do While N > 0 ' Цикл, пока число N > 0
S = S + N Mod 10 ' К сумме цифр прибавляем последнюю цифру.
N = Int (N / 10) ' Целочисленное деление на 10, убираем последнюю цифру
Loop ' В итоге N = 0, S = сумме цифр числа N
K = S Mod 9 ' K = остатку от деления суммы цифр на 9
K = 9 - K ' теперь K = дополнению остатка до 9, т.е. вычеркнутой цифре
Print#2, K ' Выводим K в выходной файл
Close ' Закрываем все файлы
End Sub