В основе алгоритма лежит последовательное деление числа на 8 и анализ остатка от этого деления. Фактически, происходит получение цифр числа в восьмеричной системе счисления. Если очередная цифра нечетная, значение a увеличивается на нее, а если четная - значение b умножается на нее. В результате a - сумма нечетных цифр числа в его восьмеричном представлении, b - произведение четных цифр.
a=2 и есть только один способ получения такой суммы нечетных цифр: 1+1
b=12и есть только один способ получения такого произведения четных цифр: 2×6.
Теперь мы знаем все цифры восьмеричного числа: 1, 1, 2, 6.
Максимальное восьмеричное число, составленное из них - это 6211.
6211₈ = 6×8³+2×8²+1×8+1 = 3072+128+8+1 = 3209₁₀
Ответ: 3209
Разберем, куда сместился чертёжник по координатам x и y после выполнения программы:
x = 3*(-2) - 1 = -6 - 4 = -10
y = 3*(-3) - 2 = -9 - 2 = -11
Если предположить, что чертежник изначально был в начале координат, то он окажется в точке (-10, -11), чтобы вернуться в начало ему нужно выполнить команду "Сместиться на вектор (10, 11)".
Program vasil ;
var n , m : integer ;
begin
write ( 'vvedi chislo bochek N=' ) ;
readln ( n ) ;
m := n mod 10 ;
if ( m = 1 and n <> 11 ) then writeln ( n , ' bochka' )
else if (m <= 4 and n <> 12 and n <> 13 and n <> 14 and m <> 0) then writeln ( n , ' bochki' )
else writeln ( n , ' bochek' ) ;
end.
Так, наверное. Если будет косяк, то пиши, или сам сообрази где ошибка. Сейчас нет под рукой компилятора, не могу оттестировать.
Язык C++.
#include < iostream >
using namespace std;
int main(){
int a, b;
cout << "Введите сколько грибов у Васи и Пети." << endl;
cin >> a >> b;
if (a > b)
cout << "У Вани больше грибов." << endl;
else if (a == b)
cout << "Количество грибов одинаковое.";
else
cout << "У Пети больше грибов." << endl;
}