Задание 8 Укажите наибольшее десятичное число, при вводе которого на экране сначала напечатается
3, а затем 24.
Паскаль Python
var x, L, M: integer;
begin
readln(x);
L:=0; M:=1;
while x > 0 do begin
L:=L + 1;
if (x mod 2) <> 1 then
M:= M * x mod 8;
x:= x div 8;
end;
writeln(L); write(M);
end.
x = int(input())
L = 0
M = 1
while x > 0:
L = L+1
if (x % 2) != 1:
M = M * x % 8
x = x // 8
print(L)
print(M)
Си++ Алгоритмический язык
#include <iostream>
using namespace std;
int main(void) {
int L, M, x;
cin >> x;
L = 0; M = 1;
while (x > 0) {
L = L + 1;
if (x % 2 != 1) {
M = M * x % 8;
}
x = x / 8;
}
cout << L << “ “ << M;
}
алг
нач
цел x, L, M
ввод x
L := 0
M := 1
нц пока x > 0
L := L + 1
если mod(x,2) <> 1
то
M:= M * mod
(x,8);
x := div(x,8)
все
кц
вывод L, нс, M
кон
ответ: .
1. При выполнения цикла каждая из троек 8 будет заменена на одну 9. Значит у нас получится строка длиной в 334 символа, где 333 девятки и последний символ - восьмерка
2. Далее 333 девятки заменятся на 111 восьмерок плюс последняя восьмерка - всего получим 112 восьмерок
3. Из 112 восьмерок получится 37 девяток и одна восьмерка
4. И 37 девяток получим 12 восьмерок плюс одна девятка и плюс последняя восьмерка
5. 12 восьмерок дадут 4 девятки плюс последние 9 и 8
6. И наконец получаем строку 8998
ответ: 8998
using namespace std;
int main ()
{
system("CHCP 1251>NUL");
int m,n;
int max;
cout<<"m="; cin>>m;
cout<<"n="; cin>>n;
if (m==0 || n==0)
{
cout<<"не выполняется условие" << endl;
system("pause");
return 0;
}
if (n>m)
max=n;
else
max=m;
cout<<"ответ:" << endl;
for (int i =-max; i<=-1; i++) // - цикл определения отрицательных делителей.
{
if ((m%i==0)&&(n%i==0))
cout<< i <<" "; // вывод отрицательного результата
}
for (int i = 1; i<=max; i++) // цикл для определения положительных делителей
{
if ((m%i==0)&&(n%i==0))
cout<<i<<" "; // вывод положительного результата
}
cout<<endl;
system("pause");
return 0;
}