Сначала приведены примеры решения с формулировкой задач, на основе примеров выполнить задания указанные ниже Задача 1. Из N целых чисел найти минимальное значение. VAR MI, X: INTEGER; I,N: INTEGER ; BEGIN WriteLn ('Введите количество значений'); ReadLn (n); WriteLn('Введите первое значение'); ReadLn (mi); FOR I:=2 TO N DO Begin WriteLn(‘Введите ‘,I,’ -е значение’); ReadLn(x); IF X0) Then Begin MI:=X; FL1:=1; End; IF (X<0) AND (X>MA) Then MA:=X; IF (X>0) AND (X
(см. объяснение)
Объяснение:
Pascal:
var x, m, s, d: integer;
begin
for i: integer := 1 to 150 do
begin
x:= i;
m:= 0;
s:= 0;
while(x>0) do
begin
d:= x mod 7;
s:= s+d;
if(d>m) then
m:= d;
x:= x div 7;
end;
if((m=5) and (s=12)) then
writeln(i);
end;
end.
Python:
for i in range(1, 150):
x = i
m = s = 0
while x > 0:
d = x % 7
s += d
if d > m:
m = d
x //= 7
if m == 5 and s == 12:
print(i)
Аналитическое решение:
Перейдем в семеричную систему счисления. Тогда операция mod 7 будет получать последнюю цифру исходного числа. Заметим также, что в переменную m кладется максимальная цифра из введенного числа. Тогда нам нужно, чтобы цифра 5 стояла в разряде единиц и была наибольшей в числе. Понятно, что двузначное число, удовлетворяющее этим условиям, собрать нельзя. Предположим, что число трехзначное, начинающееся на 1. Тогда оно имеет вид 1?5, где ?≤5. Но 1+5+5<12, поэтому такой случай никогда не приведет к интересующему ответу. Пусть число имеет вид 2?5. Тогда 2+5+5=12, то есть число 255 нас устраивает. Переведя его в десятичную систему счисления, получаем, что ответом будет число 138.
Задание выполнено!
#include <iostream>
using namespace std;
int main(){
long long a;
int n, bits[64]={0}, i=0;
cin>>a>>n;
while(a!=0){
if(a%2==0)
a/=2;
else {
bits[i]=1;
a=(a-1)/2;
}
i++;
}
cout<<bits[n-1];
}
Я обнаружил несколько недочетов в условии. Во-первых, вызвало недоумение то, что сначала номер бита обозначен n, тогда как в диапазоне его значений используется уже буква b. Ладно, допустим, обычная опечатка. Во-вторых, для записи максимально возможного числа 10¹⁸ в двоичной системе потребуется 60 цифр, но здесь утверждается, что спросят не дальше 32 бита. Тогда зачем предусматривать столь большие a? В-третьих, только из примеров стало понятно, что биты нумеруются справа налево