Когда в школе объявили день вежливости, каждый мальчик из 5а класса поздоровался за руку со всеми девочками из этого же класса. всего было 77 . сколько всего учеников 5а?
Пусть мальчиков было - х А девочек - у Тогда х*у = 77, но 77 можно разложить на множители только двумя или 11*7 Если Мальчиков 7, то девочек 11 или наоборот девочек 7, а мальчиков 11, В любом случае получается учеников в классе 7 + 11= 18
Это задача совсем не "за ". Количество чисел k2, которые делятся на два, равно целой части от n/2. Аналогично, k3=n/3 и k5/n/5. Вычтем все эти количества из общего количества чисел, равного n: k=n-(k2+k3+k5) и это даст примерное количество чисел, которые не делятся на 2, 3 и 5. Примерно оно потому, что мы не учли числа, которые одновременно делятся на 2 и 3, на 2 и 5, на 3 и 5. Т.е. числа, которые делятся на 6, 10 и 15 мы вычли дважды. Поэтому надо найти количество этих чисел и отнять их. k6=n/6, k10=n/10, k15=n/15 - по-прежнему делим нацело. И теперь за исправленное значение k принимаем k+(k6+k10+k15). И последнее. Есть еще числа, которые делятся одновременно на 2, 3 и 5, т.е. на 2*3*5=30. Таких чисел k30=n/30. И мы их дважды прибавили. Теперь делаем последнюю коррекцию k, получая : k-k30.
Окончательно формула расчета: k=n-(k/2+k/3+k/5)+(k/6+k/10+k/15)-k/30 при условии целочисленного деления.
То что мы проделали выше, носит название операции включения-исключения множеств. Программа получается совсем простой.
Sub abc() Dim n As Long n = InputBox("Введите натуральное N") If n < 0 Then n = Abs(n) 'Защита от дурака MsgBox n - (n \ 2 + n \ 3 + n \ 5) + (n \ 6 + n \ 10 + n \ 15) - n \ 30 End Sub
Const nmax=100; var a,b:array[1..nmax] of integer; i,j,n1,n2,s:integer; p:boolean; begin randomize; repeat write('Размер массива A = '); readln(n1); until n1 in [1..nmax]; writeln; writeln('Массив A: '); for i:=1 to n1 do begin a[i]:=random(15); write(a[i],' '); end; writeln; writeln; repeat write('Размер массива B = '); readln(n2); until n2 in [1..nmax]; writeln; writeln('Массив B: '); for i:=1 to n2 do begin b[i]:=random(15); write(b[i], ' '); end; s:=0; for i:=1 to n1 do begin p:=false; j:=1; while (j<=n2) and not p do if b[j]=a[i] then p:=true else inc(j); if p then inc(s,a[i]); end; writeln; writeln; writeln('Сумма = ',s); end.
А девочек - у
Тогда х*у = 77, но 77 можно разложить на множители только двумя или 11*7
Если Мальчиков 7, то девочек 11
или наоборот девочек 7, а мальчиков 11,
В любом случае получается учеников в классе 7 + 11= 18