Var a,b,c,d:integer; begin writeln('Введите число:'); readln(a); if (a div 1000=0) and (a div 100>0) then begin b:=a div 100; c:=a div 10 - (a div 100) * 10; d:=a - (a div 10)*10;writeln(b+c+d); end else writeln('Вы ввели не трехзначное число.'); end.
for steps in 1..max_steps for i in 0..op_numbers**steps-1 s = ("000000000000000000000000000000" + i.to_s(op_numbers))[-steps..-1] num = start_num log = start_num.to_s
for k in 0..s.size - 1 num, log = f0(num, log) if s[k] == "0" num, log = f1(num, log) if s[k] == "1" # num, log = f2(num, log) if s[k] == "2" break if num > end_num end # p [num, log, s, steps, i] if num == end_num log += " = " + end_num.to_s count += 1 p log end end end p count
У вас неправильно даны исходные данные, но я их уже исправил. В 1-ом примере: делятся ли 11100111000111000111111111 : 111? Во 2-ом примере: делятся ли 1110010100011100011111111 : 1110?
1-ый пример: Переводим из десятичной в двоичную 11100111000111000111111111 {2} = 60584447 {10} 111 {2} = 7 {10} 60584447 делится на 7 (можете сами проверить на калькуляторе), а это значит что исходные двоичные числа тоже делятся.
Также, чтобы проверить делимость числа на 111, или на cемь в десятичной системе, нужно разбить число на подгруппы, состоящие из трех чисел, и просуммировать их, если полученная сумма делится на 111, то и начальное число тоже делится Примеры: 1) Делится ли 10001100 на 111. 100 + 011 + 000 = 111. ответ: делится 2) Делится ли 001010100111 на 111. 001 + 010 + 100 + 111 = 1110 (допишем к этому числу необходимое количество нулей, и еще раз просуммируем) 1110 = 111000 111 + 000 = 111 ответ: делится
2-ой пример: 1110010100011100011111111 {2} = 30030079 {10} 1110 {2} = 14 {10} 30030079 уже не делится на 14, понятно,что и исходные двоичные числа не делятся
Это можно проверить и другим Число делится на 14, только если оно делится на 7, и на 2. Проверка делимости на 7 уже известна, а для проверки делимости на 2, нужно просто проверить делится ли на него последняя цифра числа. Например, 936 делится на 2, так как 6 делится. В двоичной системе надо взять первые 4 разряда и проверить их делимость на 0010. Пример: 0101 0110 1010 : 1110? 010 + 101 +101 + 010 = 1110 111 + 000 = 111 => Это число делится на 7, или 111 в двоичной. Теперь проверим делимость на два. Возьмем первые 4 разряда - 1010. 1010 {2} = 10 {10} 10 делится на 2. ответ: раз число делится на 7, и на 2, то оно делится и на 14, то есть на 1110 {2}.
begin
writeln('Введите число:');
readln(a);
if (a div 1000=0) and (a div 100>0) then begin
b:=a div 100;
c:=a div 10 - (a div 100) * 10;
d:=a - (a div 10)*10;writeln(b+c+d);
end
else writeln('Вы ввели не трехзначное число.');
end.