Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Задание 1.
Эту задачу легко решить с помощью диаграммы Венна.
Так как в Испании и Франции были три ученика, то учеников, побывавших во всех странах, не больше трех.
Шаг | Область диаграммы | Страны | Вариант 1 | Вариант 2 | Вариант 3 | Вариант 4 |
1 | 1 | Все три | 0 | 1 | 2 | 3 |
2 | 2 | Испания, Швеция | 4 – 0 = 4 | 4 – 1 = 3 | 4 – 2 = 2 | 4 – 3 = 1 |
3 | 3 | Испания, Франция | 3 – 0 = 3 | 3 – 1 = 2 | 3 – 2 = 1 | 3 – 3 = 0 |
4 | 4 | Швеция, Франция | 4 – 0 = 4 | 4 – 1 = 3 | 4 – 2 = 2 | 4 – 3 = 1 |
5 | 5 | Испания | 10 -0-4-3=3 | =4 | =5 | =6 |
6 | 6 | Франция | =4 | =5 | =6 | =7 |
7 | 7 | Швеция | =5 | =6 | =7 | =8 |
8 | 1+2+3+4+ +5+6+7 | Всего | 4+3+4+3+ +4+5=23 | 1+3+2+3+ +4+5+6=23 | 2+2+1+2+ 5+6+7=25 | 3+1+0+1+ 6+7+8=26 |
25 учеников – это третий вариант.
Только во Франции побывали 6 учеников.
Задание 3.
Поскольку по условию задачи первая и шестая цифры должны быть различны и в сумме давать 10, то на первом месте не может стоять ни 0, ни 5. Следовательно, на этом месте может стоять любая из восьми оставшихся цифр. Тогда шестое место следует занять единственным способом. Таким образом, две цифры из восьми уже заняты, и на третьем месте может стоять любая из оставшихся шести цифр. Продолжая рассуждать аналогично, получаем 8 * 6 * 4 * 1 *1 *1 = 192 возможных «особых» билета.
Задача 7.
Четверо друзей - Андрей, Борис, Сергей и Дмитрий - решили пойти на рыбалку. Но Дмитрий в последний момент отказался и высказал следующие предположения:
1) Андрей не пойдет на рыбалку, но Борис обязательно пойдет.
2) Не верно, что пойдут Андрей или Сергей.
3) Борис пойдет на рыбалку или не пойдет Сергей.
4) Если пойдет Борис, то пойдет на рыбалку и Сeргeй
Если предположить, что все высказывания Дмитрия оказались истинными, то кто пошел на рыбалку?
Введем следующие обозначения: А - «Андрей пойдет на рыбалку,»; В - «Борис пойдет на рыбалку»; С - «Сергей пойдет на рыбалку»; D - «Дмитрий пойдет на рыбалку».
1. Запишем логические формулы, соответствующие высказываниям:
1) А. В == 1, (1)
2) А+С == А. С, (2)
3)В+С==1, (3)
4) В -:, С == В + С (4)
2. Умножив уравнение (1) на (2), получим (5):
А. В.А. С == А. В.С.
3. Умножив уравнение (5) на (3), получим формулу (6):
А. В.С.(В+С) == А. В.С. В+А. В.С. С== А. В.С+А. В.С== А. В.С.
4. Умножив уравнение (6) на (4), получим формулу:
А. В. С. (В + С) == А. В. С. В + А. В. С. С == о.
Ответ: никто не пошел на рыбалку
Задание 10.
Идея решения. Заполнить 1 строку квадратного массива (N x N) числами от 1 до N. Вторая строка массива получается путем циклического сдвига элементов первой строки, и т. д. Циклический сдвиг можно реализовать, используя типовой алгоритм вставки-удаления (в зависимости от направления циклического сдвига).
При м е р л а т и н с к о г о к в а д р а т а:
1 | 2 | 3 | 4 | 5 |
5 | 1 | 2 | 3 | 4 |
4 | 5 | 1 | 2 | 3 |
3 | 4 | 5 | 1 | 2 |
2 | 3 | 4 | 5 | 1 |
Решение на Паскале:
program pr;
var а: array [1..10,1..10] of integer;
n, i,j,х: integer;
begin
writeln ('размерность='); readln (n);
for j:=l to n do
а[1, j]:=j; {==сдвиг=--} for i:=2 to n do
begin
for j:=1 to n do
a[i, j]:=a[i-l, j]; x:=a[i, n];
for j :=n downto 2 do
a[i, j]:=a[i, j-l]; a[i,1]:=x;
end;
{==--==вывод--}
for i:=1 to n do
begin
for j:=1 to n do
write( a[i, j]); writeln;
end;
end.
Входные данные | Результат |
5036 | в замке |
8060 | в замке |
3010 | вне замка |
5084 | вне замка |
4067 | вне замка |
8085 | застрял в стене |
4028 | застрял в стене |
5035 | застрял в стене |
Задание 11.
П а с к а л ь
program poter(input, output);
uses crt;
var Х, у: real;
begin
clrscr;
writе('Введите Х: '); readln(x);
writе('Введите у: '); readln(y);
if (у=10/6*х) or (у= -3/4*Х+145) or (у=О.7*Х)
then writеln('застрял в стене')
еlsе if (у<10/6*Х) and (у< -3/4*х+145) and (у>О.7*х)
then writeln('B замке')
еlsе writeln('Bнe замка');
readln
end.
Задание 12. Считалка. Напишите программу, реализующую считалку: числа от 1 до N расставляют 1
кругу и вычеркивают каждое второе число, начиная считать от 1. Требуется определить, какое число останется последним.
На входе - натуральное число N (1 ::; N ::; 1 , на выходе - последнее число.
Решенuе. Паскаль.
program sch(input, output);
var
n, i, j, t: longint;
р: byte;
s: string;
begin
writеln('Введите число: '); readln(n);
р:=2;
repeat
саsе n mod 2 of
0: саsе р of
1: begin n:=n div 2; р:=l; s:=s+' (*2)' end;
2: begin n:=n div 2; р:=2; s:=s+'(*2-1)' end;
end;
1: саsе р of
1: begin n:=n div 2; р:=2; s:=s+' (*2)' end;
2: begin n:=(n div 2)+1; р:=l; s:=s+' (*2-1)' end;
end;
end
until n=l;
i:=length(s)+1;
t:=l;
repeat
i:=i-1;
if s[i]=')' then
begin
j:=i;
repeat
j:=j-1
until s[j]=' (';
if i-j<4 then t:=t*2 еlsе t:=t*2-1; i:=j
end;
until i=l; .
writeln(t);
readln
end.
Входные | Результат |
10 | 5 |
1024 | 1 |
5000 | 1809 |
33 000 | 465 |
1 |
Задание 12. 3аметим, что задача не всегда имеет решение: например, если мальчиков слишком много, а девочек мало (или, и того хуже, нет вовсе!), то посадить каждого мальчика рядом с девочкой не удастся. Поскольку рядом с каждой девочкой могут сидеть не более двух мальчиков, то количество мальчиков не может превосходить количества девочек более чем вдвое. То есть, если Х > 2У, то задача решения не имеет. Также задача не имеет решения и в случае У> 2Х.
Покажем, что в остальных случаях школьников можно рассадить требуемым образом. Если мальчиков и девочек поровну, то одна из искомых рассадок очевидна: BGBG...BG.
Пусть мальчиков больше, чем девочек, на k человек: Х = У + k. Тогда можно рассадить школьников
Так BGB BGB...BGB BG BG...BG
К - троек y-k пар
В тройках 2k мальчиков и k девочек, в парах (У - k) мальчиков и (У - k) девочек. Итого:
2 k + (У - k) = У + k = Х мальчиков, k + (У - k) = У девочек. Поскольку Х <= 2У, то k <= у, то есть У - k >= О. Таким образом, предложенная рассадка всегда возможна. Случай, когда девочек больше, чем мальчиков, разбирается аналогично. Остается написать программу.
read(X, У);
if (Х > 2 * У) or (У > 2 * Х) then
write ('NO SOLUTION').
else if Х >= У then begin
k := Х - У;
for i := 1 to k do
wr i te ( ‘ BGB ‘ ) ;
for i := 1 to У - k do
write ('BG')
end
else begin
k := У - Х;
for i := 1 to k do
write ('GBG');
for i := 1 to Х - k do
write ('GB')
end;
Обратим внимание на некоторые особенности работы этой npограммы. Если У = Х, то k = О и первый цикл for не выполняется ни разу: все школьники рассаживаются парами "мальчик - девочка". Если же Х = 2У (или У = 2Х), не выполняется второй цикл, поскольку У - k (Х - k, соответственно) равно нулю. В этом случае все школьники рассаживаются тройками.
Задание 13.
В каждом слове есть первая буква. Поэтому вместо того, чтобы считать слова, можно считать первые буквы слов. Какая буква является первой буквой слова? Любая, слева от которой стоит не буква. Исключение составляет буква, слева от которой стоит символ "-", а перед ним - буква. осталось написать программу, которая перебирает все символы строки и считает, сколько среди них первых букв.
read(s);
for i := 1 to 1ength(s) do
{s[i] – буква}
if (s [i ] in [' а ‘ . . ‘z ‘ , 'А' . . ' Z ' ] )
{s[i - 1] - не буква}
and not (s[i - 1] in [' а ' . . ' z ‘ , 'А' . . ' Z ' ] ) {s[i - 1] - не дефис}
and not ((s[i - 1] = '-') and
(s [i - 2] in [' а ‘ . . ‘z' , ‘А' .. 'Z'] ))
then n := n + 1;
write(n);
у этой программы есть небольшой дефект. Когда мы проверяем, например, символ s [ 1] , нам приходится обращаться к несуществующим символам s [ 0 ] и s [ -1]. Чтобы избежать этого, можно изначально добавить в начало строки два символа, которые не ПОВЛИЯЮТ на количество слов в строке, например,
s : =' ! !’ + S, и начинать искать первые буквы слов, начиная с третьего символа строки.
for i := 3 to 1ength(s) do ..


