Главная страница

Решение ЕГЭ по информатике. Решение первой части на Python. Переменная Переменная Переменная Переменная Функция 0 0 0 0 0 0 0 0 0 vk com99ballov inf vk com99ballov infaa Определите, при каком наименьшем введённом значении переменной s программа


Скачать 1.7 Mb.
НазваниеПеременная Переменная Переменная Переменная Функция 0 0 0 0 0 0 0 0 0 vk com99ballov inf vk com99ballov infaa Определите, при каком наименьшем введённом значении переменной s программа
АнкорРешение ЕГЭ по информатике
Дата27.08.2022
Размер1.7 Mb.
Формат файлаpdf
Имя файлаРешение первой части на Python.pdf
ТипПрограмма
#654263
vk.com/99ballov_inf vk.com/99ballov_infaa instagram.com/danil99ballov/
youtube.com/channel/UCMaXzRQ7_TpfVWgbEXQOH7w
vk.com/99ballov_inf vk.com/99ballov_infaa Логическая функция F задается выражением ( x z ) ( y ( w v x ) Дан частично заполненный фрагмент, содержащий
неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы ( сначала - буква, соответствующая первому столбцу затем - буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить ненужно. Инверсия = ЕСЛИ(А2=1;0;1);
2. Дизъюнкция = ЕСЛИ(ИЛИ(А2=1;В2=1);1;0);
3. Конъюнкция
= ЕСЛИ(И(А2=1;В2=1);1;0);
4. Импликация
= ЕСЛИ(И(А2=1;В2=0);0;1);
5. Эквивалентность ЕСЛИ(А2=В2;1;0).
Переменная Переменная Переменная Переменная Функция 0
0 0
0 0
0 0
0 0
vk.com/99ballov_inf vk.com/99ballov_infaa Определите, при каком наименьшем введённом значении переменной s программа выведет число 256.
var s, n: integer;
begin readln (s);
n := 1;
while s <= 45 do begin s := s + 4;
n := n * 2
end;
writeln(n)
end.
for s in range(-1000, 1000):
n = 1
while s <= 45:
s = s + 4
n = n * 2
if n == 256:
print(s)
#include
using namespace std;
int main(){
int s, n, i;
for (i=-1000;i< 1000;i++){
s = i;
n = 1;
while (s <= 45){
s += 4;
n *= 2;
}
if (n == 256)
cout << i << endl;
}
return 0;
}
var s, n, i: i nteger
;
begin
for
i:=-
1000
to 1000 do begin
s := i;
n :=
1
;
while s <=
45
do begin
s := s +
4
;
n := n
* 2
end;
if n =
256
then
writeln(i)
end;
end.
s = int(input())
n = 1
while s <= 45:
s = s + 4
n = n * 2
print( n )
vk.com/99ballov_inf vk.com/99ballov_infaa Маша составляет буквенные коды из букв ВУАЛЬ. Каждую букву нужно использовать ровно 1 раз, при этом код буква Ь не может стоять на первом месте и перед гласной. Сколько различных кодов может составить Маша?
n=0
s=’вуаль’
for a in s[:4]: for b in s: for c in s: for d in s: for e in s: st=a+b+c+d+e for x in s: if st.count(x)!=1:
break else:
if st.count(‘ьу’)==0 and st.count(‘ьа’)==0: n+=1
print(n)
vk.com/99ballov_inf vk.com/99ballov_infaa Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (2222) ИЛИ нашлось (8888)
ЕСЛИ нашлось (2222)
ТО заменить (2222, 88)
ИНАЧЕ заменить (8888, 22)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ Какая строка получится в результате применения приведённой программы к строке, состоящей из 70 идущих подряд цифр 8? В ответе запишите полученную строку var s := StringOfChar(‘8’, 70);
var p2 := Pos(‘2222’,s);
var p8 := Pos(‘8888’,s);
while (p2 > 0) or (p8 > 0) do begin if p2 > 0 then begin
Delete( s, p2, 4 );
Insert( ‘88’, s, p2 );
end else begin
Delete( s, p8, 4 );
Insert( ‘22’, s, p8 );
end;
p2 := Pos(‘2222’,s);
p8 := Pos(‘8888’,s);
end;
write(s);
end.
#include

using namespace std;
int main(){
string s(70,
‘8’
);
cout
<<
s
<< endl;
int p2 = s.find(
‘‘2222‘‘
);
int p8 = s.find(
‘‘8888‘‘
);
while
(p2 != string
::npos or p8 != string
::npos) {
if
(p2 != string
::npos)
s.replace(p2, 4, «88»);
else s.replace(p8, 4, «22»);
p2 = s.find(«2222»);
p8 = s.find(«8888»);
cout
<<
s
<<
endl;
}
cout
<<
s;
}
s = 70*’8’
while «2222» in s or «8888» in s:
if «2222» in s:
s = s.replace( «2222», «88», 1 )
else:
s = s.replace( «8888», «22», 1 )
print(s)
vk.com/99ballov_inf vk.com/99ballov_infaa Значение арифметического выражения 497 + 721 – 7 – записали в системесчисле- ния с основанием 7. Сколько цифр 6 содержится в этой записи a: BigInteger;
k: int64;
begin a := BigInteger.Pow(49, 7) + BigInteger.
Pow(7, 21) - 7;
k := 0;
while (a > 0) do begin if (a mod 7 = 6) then k := k + 1;
a := a div 7;
end;
writeln(k);
end.
x = 49**7 + 7**21 - 7
count6 = 0
while x:
if x % 7 == 6: count6 += 1
x //= 7
print( count6 )
vk.com/99ballov_inf vk.com/99ballov_infaa Решите уравнение Ответ запишите в троичной системе счисления. Основание системы счисления указывать ненужно x = i break x3 = ‘’
while x > 0:
x3 += str(x%3)
x //= 3
x3 = x3[::-1]
print(x3)
var
x ,i:
Integer
;
b,a,c: real
;
x3 : string
;
Begin
a :=
1
*
7
**
2
+
0
+
1
;
c := a -
1
;
for i :=
3
to
99
do begin
b :=
1
*i**
2
+
2
*i +
1
;
if b = c then begin
x := i;
break;
end;
end;
while x >
0
do begin
x3 += inttostr(x
mod
3
);
x := x
div
3
;
end;
for i:=length(x3) downto
1
do
write(x3[i]);
End.
vk.com/99ballov_inf vk.com/99ballov_infaa Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например, 14&5 = 11102&01012 = 01002 = 4. Для какого наименьшего неотрицательного целого числа А формула x&25 ≠ 0 → (x&17 = 0 → А ≠ тождественно истинна (те. принимает значение 1 при любом неотрицательном целом значении переменной х
A, x: integer;
OK : Boolean;
function PK(x, D: integer): boolean;
begin
PK := (x and D = 0);
end;
function F(x, A: integer): boolean;
begin
F := (PK(x, 25) or not(PK(x, 17)) or not(PK(x, A)));
end;
Begin
For A:= 1 to 100 do begin
OK := True;
For x:= 1 to 10000 do if F(x, A) = False then begin
OK := False;
break;
end;
if OK = True then writeln(A);
end;
end.
def PK(x, D):
return x & D == 0
def F(x, A):
return PK(x, 25) or not(PK(x, 17))
or not(PK(x, A))
for A in range(100):
OK = True for x in range(10000):
if not(F(x, A)):
OK = False break if OK:
print(A)
vk.com/99ballov_inf vk.com/99ballov_infaa Укажите наибольшее целое значение А, при котором выражение - x ≠ 5) v (A < 2x + y) v (A < y + истинно для любых целых положительных значений x и y.
2 3
var x,A,y,i: integer;
OK : boolean;
function F( x, y, A : integer):Boolean;
begin
F := (y - x <> 5)
or (A < 2*x*x*x + y) or (A < y*y + 16)
end;
Begin
for A := 1 to 100 do begin
OK := True;
for x:=1 to 1000 do
for y:=1 to 1000 do
if not F(x,y,A) then begin
OK := False;
break
end;
if (OK=True) then
writeln(A);
end;
end.
def f( x, y, A ):
return (y - x != 5) or (A < 2*x**3 + y) or (A < y**2 + 16)
for A in range(1,100):
OK = True for x in range(1,1000):
for y in range(1,1000):
if not f(x, y, A):
OK = False break if OK:
print( A )
vk.com/99ballov_inf vk.com/99ballov_infaa Обозначим через ДЕЛ утверждение натуральное число n делится без остатка на натуральное число m». Для какого наибольшего натурального числа А формула
¬ДЕЛ(x,А)→(ДЕЛ(x,6)→ ¬ДЕЛ(x,9))
тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х
Var
A, x: integer;
OK : Boolean;
function DEL(x, D: integer): boolean;
begin
DEL := x mod D = 0;
end;
function F(x, A: integer): boolean;
begin
F := DEL(x, A) or not(DEL(x, 6)) or not(DEL(x, 9));
end;
Begin
For A:= 1 to 1000 do begin
OK := True;
For x:= 1 to 1000 do if F(x, A) = False then begin
OK := False;
break;
end;
if OK = True then writeln(A);
end;
end.
def Del( x, D ):
return x % D == 0
def f( x, A ):
return (Del(x,A)) or (not Del(x,6) or not Del(x,9))
for A in range(1,1000):
OK = True for x in range(1,1000):
if not f(x,A):
OK = False break if OK:
print( A )
vk.com/99ballov_inf vk.com/99ballov_infaa На числовой прямой даны два отрезка P = [5, 30] и Q = [14, 23]. Укажите наибольшую возможную длину промежутка A, для которого формула P) (x Q)) → ¬(x тождественно истинна, то есть принимает значение 1 при любом значении переменной х x,An,Ak,i,min : integer;
OK : boolean;
function F( x, An, Ak : integer):Boolean;
begin
F :=
not((x >= 130) and (x <= 171)) or not((x >= 150)
and (x <= 180)) or ((x >= An) and (x <= Ak));
end;
Begin
min := 200;
for An := 100 to 199 do
for Ak:= An+1 to 200 do begin
OK := True;
for x:=1 to 1000 do
if not F(x,An,Ak) then begin
OK := False;
break
end;
if (OK=True) and (Ak - An < min) then
min := Ak - An;
end;
writeln(min+1);
end.
def f( x, An, Ak ):
return not(130 <= x <= 171) or not(150 <= x <= 185)\
or (An <= x <= Ak)
min = 200
for An in range(100,199):
for Ak in range(An+1,200):
OK = True for x in range(1,1000):
if not f(x,An,Ak):
OK = False break if OK and Ak - An < min:
min = Ak - An print(min+1)
vk.com/99ballov_inf vk.com/99ballov_infaa Определите, сколько символов * выведет эта процедура при вызове F(22): Для выполнения задания можно также написать программу или воспользоваться редактором электронных таблиц.
Python
Паскаль
C++
def F( n ):
print(‘*’)
if n >= 1:
print(‘*’)
F(n-1)
F(n-2)
F(n-3)
procedure F( n: integer );
begin write(‘*’);
if n >= 1 then begin write(‘*’);
F(n-1);
F(n-2);
F(n-3);
end;
end;
void F( int n )
{
cout << ‘*’;
if( n >= 1 ) {
cout << ‘*’;
F(n-1);
F(n-2);
F(n-3);
}
}
cnt = 0
def F( n ):
global cnt cnt += 1
if n >= 1:
cnt += 1
F(n-1)
F(n-2)
F(n-3)
F(22)
print(cnt)
#include
using namespace std;
int cnt = 0;
void F( int n ){
cnt++;
if( n >= 1 ) {
cnt++;
F(n-1);
F(n-2);
F(n-3);
}
}
int main(){
F(22);
cout << cnt;
}
var cnt: integer
;
procedure F( n: integer
);
begin
inc(cnt);
if n >=
1
then begin
inc(cnt);
F(n-
1
);
F(n-
2
);
F(n-
3
);
end;
end;
begin
cnt :=
0
;
F(
22
);
writeln(cnt);
end.
vk.com/99ballov_inf vk.com/99ballov_infaa Алгоритм вычисления функции F(n) задан следующими соотношениями) = 1 при n = 1
F(n) = n + F(n–1), если n чётно,
F(n) = 2· F(n–2), если n > 1 и n нечётно.
Чему равно значение функции F(26)? def F(n):
if n == 1: return 1
if n % 2 == 0:
return n + F(n-1)
else:
return 2 * F(n-2)
print( F(26) )
#include
using namespace std;
int F( int n ){
if( n == 1 ) return 1;
if( n % 2 == 0 )
return n + F(n-1);
else return 2 * F(n-2);
}
int main(){
cout << F(26);
}
function F( n: integer
): integer
;
begin
if n =
1
then begin
F :=
1
;
Exit
;
end;
if n mod
2
=
0
then
F := n + F(n-
1
)
else
F :=
2
* F(n-
2
);
end;
begin
writeln( F(
26
) )
end.
vk.com/99ballov_inf vk.com/99ballov_infaa Рассматривается множество целых чисел, принадлежащих числовому отрезку
[6391; 8185], которые делятся на 11 или 17 и не делятся на 2, 13, 14, 34. Найдите количество таких чисел и минимальное из них. В ответе запишите два целых числа без пробелов и других дополнительных символов сначала количество, затем минимальное число. Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц count, min, i: integer
;
begin
min :=
8185
;
count :=
0
;
for i :=
6391
to
8185
do begin
if (i mod
11
=
0
)
or (i mod
17
=
0
)
then
if i mod
2
<>
0
then
if i mod
13
<>
0
then
if i mod
14
<>
0
then
if i mod
34
<>
0
then begin
count := count +
1
;
if i < min then
min := i;
end;
end;
writeln(count, min);
end.
#include

using namespace std;
int main() {
int min=8185,cnt=0,i;
for
(i = 6391; i <= 8185; i++) {
if
((i % 11 == 0 || i % 17 == 0) && (i % 2 != 0
&& i % 13 != 0
&& i % 14 != 0 && i % 34 != 0)) {
cnt++;
if
(i < min)
min = i;
}
}
cout
<<
cnt
<<
min;
return
0;
}
min,cnt = 8185, 0
for i in range (6391, 8186):
if ((i % 17 == 0) or (i % 11 == 0)) and ((i % 2 != 0) and (i % 13 != 0) and (i % 14 != 0) and (i % 34 != 0)):
cnt += 1
if i < min:
min = i print(cnt, min, sep=’’)
vk.com/99ballov_inf vk.com/99ballov_infaa Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее
77. Победителем считается игрок, сделавший последний ход, те. первым получивший такую позицию, при которой в кучах будет 77 или больше камней. В начальный момент впервой куче было семь камней, во второй куче – S камней 1 ≤ S ≤ Задание 19.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация воз- можна.
Задание 20. Найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия − Петя не может выиграть за один ход − Петя может выиграть своим вторым ходом независимо оттого, как будет ходить Ваня.Найденные значения запишите в ответе в порядке возраста- ния.
Задание 21. Найдите минимальное значение S, при котором одновременно выполняются два условия у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. end = 77
lose = []
output = []
for i in range(2*end):
output.append([0]*2*end)
for x in range(end-1,0,-1):
for y in range(end-x-1,0,-1):
follow = [ output[x+1][y], output[2*x][y],
output[x][y+1], output[x][2*y]]
lose.clear()
for i in range(4):
if follow[i] <= 0:
lose.append(follow[i])
if lose:
output[x][y] = -max(lose) + 1
else:
output[x][y] = -max(follow)
N1 = 7
for S in range(end-N1-1,0,-1):
print(S, output[N1][S])
vk.com/99ballov_inf vk.com/99ballov_infaa Ниже на четырех языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа L и M. Укажите наибольшее число x, при вводе которого алгоритм печатает сначала 4, а потом 5.
#include
using namespace std;
int main ( )
{
int x, L, M, Q;
cin >>x;
Q = 9;
L = 0;
while (x >= Q) {
L = L + 1; x = x - Q;
}
M = x;
if (M < L) {
M = L;
L = x;
}
cout < return 0;
}
алг нач цель x, L, M, Q
ввод x
Q := 9
L := 0
нц пока x >= Q
L := L + 1
x := x - Q
кц
M := x если M < L
то
M := L
L := x все вывод L, мс, кон x = int (input ( ) )
Q = 9
L = 0
while x >= Q;
L = L + 1; x = x - Q;
M = x;
if M < L;
M = L;
L = x;
print (L)
print (M)
var x, L, M, Q: integer;
begin readln (x)
Q := 9;
L := 0;
while x >= Q do begin
L := L + 1; x := x - Q;
end;
M := x;
if M < L then begin
M := L;
L := x;
end;
writeln(L);
writeln(M);
end.
С++
Алгоритмический язык
Python
Паскаль
vk.com/99ballov_inf vk.com/99ballov_infaa instagram.com/danil99ballov/
youtube.com/channel/UCMaXzRQ7_TpfVWgbEXQOH7w
var x, L, M, Q, i: integer
;
begin
for i:=
1
to
1000
do begin
x := i;
Q :=
9
;
L :=
0
;
while x >= Q do begin
L := L + 1;
x := x - Q;
end;
M := x;
if M < L then begin
M := L;
L := x;
end;
if (L =
4
)
and (M =
5
)
then
writeln(i);
end;
end.
for i in range(1,1001):
x = i
Q = 9
L = 0
while x >= Q:
L = L + 1
x = x - Q
M = x if M < L:
M = L
L = x if L == 4 and M == 5:
print(i)
#include
using namespace std;
int main(){
int x, L, M, Q;
for( int i = 1; i <= 1000; i ++ ) {
x = i;
Q = 9;
L = 0;
while (x >= Q) {
L = L + 1;
x = x - Q;
}
M = x;
if (M < L) {
M = L;
L = x;
}
if( L == 4 and M == 5 )
cout << i << endl;
}
}
vk.com/99ballov_inf vk.com/99ballov_infaa Исполнитель М преобразует число на экране. У исполнителя есть три команды, которым присвоены номера. Прибавить 1
2. Прибавить 2
3. Умножить на Первая команда увеличивает число на экране на 1, вторая – увеличивает его на 2, а третья – умножает его на 3. Программа для исполнителя М – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 12 и при этом траектория вычислений содержит числа
8 и 10?
#include
using namespace std;
int numProg( int start, int x ) {
int K;
if( x < start ) return 0;
if( x == start ) return 1;
K = numProg( start, x-1 )+ numProg( start, x-2 );
if( x % 3 == 0 )
K += numProg( start, x / 3 );
return K; }
int main(){
cout << numProg(2,8)* numProg(8,12)
* numProg(10,12);}
def numProg( start, x ):
if x < start: return 0 if x == start: return 1
K = numProg( start, x-2 )
K += numProg( start, x-1 ) if x % 3 == 0:
K += numProg( start, x//3 ) return K
print(numProg(2,8)*numProg(8,10)*numProg(10,12))
function numProg( start, x: integer ): integer;
var K: integer;
begin if x < start then numProg := 0
else if x = start then numProg := 1
else begin
K:=numProg(start,x-1)+numProg(start,x-2);
if x mod 3 = 0 then
K := K + numProg( start, x div 3 );
numProg := K;
end;
end;
begin writeln( numProg(2,8)*numProg(8,10)
*numProg(10,12) );
end.


написать администратору сайта