Файл: Олимпиадаа дайындалуа арналан есептер жинаЫ 1 Екі санны осындасын табу программасын ру керек.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 77
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Мәліметтерді енгізу форматы
Кіріс файлдың жекеше жолында үш бүтін сан жазылған А,В,С(0<=A, B<=1018,1<=C<=1018). Сандар аралары пробел арқылы бөлінген.
Мәліметтерді шығару форматы
Шығыс файлда бір бүтін сан жазылу керек-есептің жауабы.
Мысал
F. in | F. out |
3 4 5 | 1 |
uses crt;
var i,j,k,l,m,n:longint;
begin
assign(input,'f.in');reset(input);
assign(output,'f.out');rewrite(output);
readln(i,j,k);
l:=1;m:=0;
repeat
inc(m);
l:=l*(i mod k);
until(m=j);
writeln(l mod k);
close(input);close(output);
end.
№72 Спортшы бірінші күні 10 км жүгірді. Әр күні ол күнделікті жүгіру нормасына 10 % қосып отырды.Спортшы неше күнен кейін:
а) 20 км астам жол жүгіреді;
b) қосқанда 100 км астам жол жүгіреді.
a) Program F7_a1;
Var s: real; i: integer;
Begin
S:=10; i:=1;
While s<=20 do
Begin
I:=i+1;s:=s+0.1*s end;
Write (‘20 км астам жол жүгіреды ол ',I,’күні’);
End.
b) Program F7_b1;
Var s, sum: real; i: integer;
Begin
S:=10; i:=1; sum:=s;
While sum<=100 do
Begin
I:=i+1;s:=s+0.1*s;sum:=sum+s end;
Write (‘қосқанда 100 км астам жол жүгіреді, ол.',I,’күні’);
End.
№73 Берілген үштаңбалы санның бірдей цифрларының бар екенін анықтайтын программа жаз.
Program F8_a1;
Var x,x1,x2,x3: integer;
Begin writeln; write(‘үш таңбалы санды енгіз’); read(x);
x1:=x mod 10;
x2:= x mod 10;
x:=x div 10;
x3:=x div 10;
if (x1=x2) or (x2=x3) or (x1=x3) then write(‘бар ’) else write (‘ жоқ’);
end.
№74 N элементтен түратын массив берілген. Оны төмендегі берілген ереже бойынша өзгертіп жаңа массив құрастыратын программа жаз(егер хкі- мағынасында берілсе к-жаңа массивтің элементы болады):
-
Xri =max x, егер I<=i<=k; -
массив элементтерінің кері жағдайдағы; -
XiN=XI, xik=xk+1 , мұнда k=1,2,…N-1 .
-
Program F9_d1;
Const n=5;
Var x:array[1..n] of integer; i, k, max : integer;
Begin
For I:=1 to n do
Begin
Write(‘массив элементінің нөмірін енгіз’, i); readln (x[i]);
End;
For k:=1 to n do
Begin
Max= x[k];
For i:=1 to k do if x [i]> max then max:= x[i];
X[k]:= max;
End;
For i:=1 to n do write (‘ ‘,x[i])
End.
-
Program F9_d2;
Const n=5;
Var x:array[1..n] of integer; i,z : integer;
Begin
For I:=1 to n do
Begin
Write(‘массив элементінің нөмірін енгіз’, i); readln (x[i]);
End;
For i:=1 to n do
Begin
z:= x[i];
x [i]:= x[n-i+1];
x[n-i+1]:= z;
End;
For i:=1 to n do write (‘ ‘,x[i])
End.
-
Program F9_d3;
Const n=5;
Var x:array[1..n] of integer; I, z : integer;
Begin
For I:=1 to n do
Begin
Write(‘массив элементінің нөмірін енгіз’, i); readln (x[i]);
End;
Z:= x[n];
x [n]:= x[1];
for i:=1 to n-2 do x[i]= x[i+1];
x[n-1];=z;
For i:=1 to n do write (‘ ‘,x[i])
End.
№75 Х және У массив элементтері кему ретімен орналасқан. Массив элементтерін бір Z массивіне қосып, оның элменттерінде кему ретілігімен орналстырып программа жаз.
Program F10_d1;
Const n=5;
Var x,y:array[1..n] of integer; z :array[1..2*n] of integer; I,j,k,m:integer;
Begin
For I:=1 to n do
Begin
Write(‘x,y элементінің нөмірін енгіз’, i); readln (x[i], y[i]);
end;
k:=0;
for i:=1 to n do
begin
k:=k+1; z[k]:=x[i];
k:=k+1; z[k]:=y[i];
End;
For i:=1 to n do
Begin
M=z[i]; k:=I;
For j:=I to n do if z[j]>m then begin m:=z[j]; k:=j end;
B:=z[i]; z[i]=z[k]; z[k]:=b
End;
For i:=1 to n do write(‘ ‘,z[i])
End.
№76 Қашықтан сегіру жарысының қортындысы келесі матрицада көрсетіледі 5х3(5- спортшы, 3- әр споршының кезегі). Қандай споршы, қай кезекте ең жоғары нәтиже көрсететін программа жаз.
Program f11_d1;
Var I,j,max,k,m: integer; a:array[1..5,1..3] of integer;
Begin
For i:=1 to 5 do
For j:=1 to 3 do
Begin
Write(‘енгіз а ’, I,j); read (a[I,j]);
End;
Writeln(‘енгізілген екі өлшемді массивтің түрі:’);
For i:=1 to 5 do
Begin
For j:=1 to 3 do write(a[I,j]:3);
Writeln end;
Max:=a[1,1]; k:=1; m:=1;
For i:=1 to 5 do
For j:=1 to 3 do
If a(I,j)> max then begin max:=a[I,j]; k:=I; m:=j end;
Write(‘жоғары нәтиже =’. max);
Write(‘споршы нөмірі’, k,’кезекті нөмірде’, m) end.
№77 3х3 берілген екі өлшемді массивтің қатар , бағана және диагональ бойынша сандардың қосындысы бірдей матрицаны шығаратын программа жаз. Мысалы:
-
2
9
4
7
5
3
6
1
8
Program f12_d1;
Const n=3;
Var I,j,x1,k,s,s1: integer; a: array[1..n,1..n] of integer;
Begin
For I:=1 to n do
For j:=1 to n do
Begin
Write(‘ а енгізу’, I,j ); read(a[I,j]);
End;
Writeln(‘енгізілген матрица түрі:’);
For I:=1 to n do
Begin
For j:=1 to n do write(a[I,j]:3);
Writeln
End;
X1:=0;
For i=1 to n do x1:=x1+ a(1,i) k:=0; for i:=1 to n do
Begin s:=0;
For j:=1 to n do s:=s+a[I,j];
If s=x1 then k:=k+1;
End;
For i:=1 to n do
Begin s:=0;
For j:=1 to n do s:=s+a[j,i];
If s=x1 then k:=k+1 end;
S:=0; s1:=0;
For i:=1 to n do begin
S:=s+a[I,i];
S1:=s1+a[I,n-i+1] end;
If s=x1 then k=k+1; if s1=x1 then k=k+1;
If k=2*n+2 then write(‘магикалық квадрат’) else write (‘жоқ’) end.
№78 Латын кестесі
Берілген 4х4 екі өлшемді массивтің қатары мен бағанасында 1 ден 4-ке дейінгі сандар бір рет қана кездесетін матрица екенін анықтайтын программа жаз. Мысалы:
-
1
2
3
4
2
1
4
3
3
4
1
2
4
3
2
1
Program f13_d1;
Label 1,2;
Const n=4;
Var I,j,s,s1:integer: a: array[1..n,1..n] of integer;
Begin
For i:=1 to n do
For j:=1 to n do
Begin
Write(‘’,I,j); read( a[I,j]);
End;
Writeln(‘’);
For i:=1 to n do
Begin
For j:=1 to n do write(a[I,j]:3);
Writeln
End;
S1:=0;
For i:=1 to n do s1:=s1+I;
For i:=1 to n do
Begin
S:=0;
For j:=1 to n do s:=s+a[I,j];
If s<>s1 then goto 1
End;
For i:=1 to n do
Begin
S:=0;
For j:=1 to n do s:=s+a[j,i];
If s <> s1 then goto 1
End;
Write(‘латын квадрат’);
Goto 2;
1: write(‘’);
2: end.
№79 Берілген санды ондық жүйеден : а) екілік санау жүйесіне;
b) сегіздік санау жүйесіне аударатын программа жаз.
Program f14_d1;
Var x,x1:integer;
Function dv(x:integer): integer;
Var y,z,k: integer;
Begin z:=1; y:=0;
While x> 0 do begin
K:=x mod 2; y:=y+k*z; z:=z*10;x:=x div 2 end; end;
Function vos(x: integer): integer;
Var y,z,k: integer;
Begin z:=1; y:=0;
While x>0 do begin
K:=x mod 8; y:=y+ k*z; z:=z*10; x:=x div 8
End; end;
Begin
Write(‘ санды енгіз’,x); x1:= dv(x);
Write(‘сан’, x,’екілік санау жүйесі=’, x1);
X1:=vos(x);
Write(‘саны’, x,’сегіздік санау жүйесінде=’, x1);
End.
№80
1, мұнда n =0
Xn= { 1/x|n| мұнда n< 0
X*xn-1 мұнда n > 0
Х саның n- дәріжесін, жоғардағы формула бойынша табатын программа жаз.
Program f15_d1;
Var x,y:real; k,n:integer;
Function xn(x:real; n: integer): real;
Begin
If n=0 then xn:=1 else xn:=x*xn(x,n-1)
End;
Begin
Writeln; write( ‘x,n енгіз’); readln(x,n);
If n< 0 then begin k:=-1; n:=abs(n) end;
Y:=xn(x,n);
If k=-1 then y:=1/y;
Write(‘x-тің дәрежесі n=’, y) end.
№81 M мен N натурал сандары берілген. М санынан кіші және N санның цифрлардың квадратына тең сандарды табатын программа жаз.
Program f16_d1;
Label 1;
Var I,j,m,n,x,a,s: integer;
Begin writeln; write(‘M,N енгіз’ ) ; readln(m,n);
For i:=1 to m-1 do begin
S:=0; x:=I;
1: a:=x mod 10; s:=s+a;
X:=x div 10;
If x> 0 then goto 1;
If s*s= n then write(‘ ‘, i)
End;
Readln;
End.
№82 Берілген натурал санды 16-лық есептеу өлшеміне ауыстыратын программа жаз.
Program f17_d1;
Var n,k,r,x,x1: integer; as.bs: string;
Begin
Writeln; write(‘ондық санды енгіз ’); read (x); x1:=x;
As:= ‘’; write (‘есепетеу жүйенің негізін енгіз’); read(n);
While x> 0 do begin k:=x mod n; x:=x div n;
If k < 10 then str (k,bs) else bs:= chr(ord(‘A’)+k-10);
As:= bs+as end; write (‘сан’, x1,’ есесптеу өлшемінің негізі’, n,’=’, as) end.
№83 Берілген мәтіннің ішіндегі ең ұзын сөзды таңдайтын программа жаз.
Program f18_d1;
Label 1;
Var I,m,l,k,d: longint; t,n: string;
Begin
Writeln; write (‘мәтін енгіз’); readln(t); t:=+’ ’;
I:= length(t); m:=0; k:=1; i:=1;
While i<=l do begin
If copy (t,I,1)=’’ then begin d:=i-k;
If d> m then begin
M:=d; n:= copy(t,k,d);
End;
K:=i+1; end;
1: I:=i+1 end; write(‘ ең ұзын сөз’’ ‘,n,’’’әріптер саны ‘, m); readln; end.
№84 Мәтін ішіндегі сөздердің соңында берілген әріп қанша кездеседі, оны пайыз түрін аудар.
Program f19_d1;
Var I,s,l,k,s1: longint; t,a: string; p: real;
Begin
Writeln; write (‘мәтін енгіз’); readln(t); t:=+’ ’;
I:= length(t); write(‘берілген әріпті енгіз ’); readln(a);
K:=1; s:=0; s1:=0;
For i:=1 to l do begin
If copy (t,I,1)= ‘ ‘ then begin
If copy (t,k,1)= a then s1:=s1+1;
S:=s+1; k:=i+1;
End; end; p:=s1*100/s;
Write(‘берілген әріптің пайызы ’’’, а, ‘’’ тең=’, p); readln; end.
№85 Фамилия тізімін пробел арқылы енгізіп, осы тізімді берілген әріптен бастап құрайтын программа жаз.
Program f20_d1;
Var I ,m ,l, k, d: longint; t, a: string;
Begin writeln; write(‘тізімді енгіз ’); readln(t); t:=t+’;
L:= length(t); write(‘берілген әріпті енгіз ‘); readln(a); k:=l;
For i:=1 to l do begin
If copy (t,I,1)= ‘ ‘ then begin
If copy (t,k,1)= a then write(‘ ‘, copy(t,k,i-k)); k:=i+1;
end; end; readln; end.
№86 Берілген екі таңбалы санды жазу түрінде жазылатын программа жаз (мысалы, 64 –ті «алпыс төрт » деген мәлімет шығару).
Program f21_d1;
Label 1;
Var n,n1, n2: longint; s: string;
Begin
Writeln; write(‘’); readln(n);
N1:= n mod 10;
N2:= n div 10;
If (n>=10) and (n<20) then begin
If n=10 then s:=’он’;
If n=11 then s:=’он бір’;
If n=12 then s:=’он екі’;
If n=13 then s:=’он үш’;
If n=14 then s:=’он төрт’;
If n=15 then s:=’он бес’;
If n=16 then s:=’он алты’;
If n=17 then s:=’он жеті’;
If n=18 then s:=’он сегіз’;
If n=19 then s:=’он тоғыз’;
Goto 1 end;
If n2=2 then s:=’жиырма’;
If n2=3 then s:=’отыз’;
If n2=4 then s:=’қырық’;
If n2=5 then s:=’елу’;
If n2=6 then s:=’алпыс’;
If n2=7 then s:=’жетпіс’;
If n2=8 then s:=’сексен’;
If n2=9 then s:=’тоқсан’;
If n1=1 then s:=s+’бір ‘;
If n1=2 then s:=s+’ екі‘;
If n1=3 then s:=s+’үш ‘;
If n1=4 then s:=s+’төрт ‘;
If n1=5 then s:=s+’ бес‘;
If n1=6 then s:=s+’ алты‘;
If n1=7 then s:=s+’жеті ‘;
If n1=8 then s:=s+’ сегіз‘;
If n1=9 then s:=s+’ тоғыз‘;
1:write(s);
Readln; end.
№87 Берілген квадратық матрицаның элементтерін спираль бойымен орналастыр. Мысалы, 7 х7 квадраттық матрицасы берілген, оны толықтыру ретілгі
-
2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
Program f22_d1;
Label 1,2;
Const n=7;
Var I,j,k,c,r,m,g,p: integer;
Begin k:=1; c:=0; r:=1;
Writeln;
For i:=1 to (n div 2) +1 do begin
For j:=I to n-i+1 do begin
C:=c+1; a[r,c]:=k; k:=k+1; write(a[r,c], ‘ ’) end;
For m:=i+1 to n-i+1 do begin r:=r+1; a[r,c]:=k; k:=k+1 end;
For p:=n-I downto I do begin c:=c-1; a[r,c]:=k; k:=k+1 end;
For q:=n-i+1 downto i+2 do begin r:=r-1; a[r,c]:= k; k:=k+1 end; end;
Writeln; for i:=1 to n do begin writeln;
For j:=1 to n do write(a[I,j]-5); end; end.
№88 a,b,c натурал сандары берілген, олар келесі күнің күнін, айын және жылын белгілейтін сандар болатын программа жаз.
Program f23_ d1;
Label 1;
Var a,b,c,a1,b1,c1: integer;
D: array[1..12] of integer;
Begin writeln; write(‘күн, ай және жылын енгіз’); read(a,b,c);
D[1]:=31; if c mod 2 =0 then d[2]:=29 else d[2]:=28;
If(c mod 100=0) and (c mod 400 <>0) then d[2]:=28;
D[3]:=31; d[4]:=30; d[5]:=31; d[6]:=30; d[7]:=31; d[8]:=31;
d[9]:=30; d[10]:=31; d[11]:=30; d[12]:=31;
if (b=12) and (a=31) then begin a1:=1; b1:=1; c1:=c+1; goto 1 end;
if a=d[b] then begin a1:=1; b1:=b+1;c1:=c end else begin a1:=a+1; b1:=b; c1:=c end;
1: writeln; write(‘’, a1,’’,b1,’’,c1); end.
№89 Мұғалімдер күні жыл сайын қазан айның бірнші жексенбісінде аталып өтеді. Берілген n саны жыл нөмірін белгілейді. Көрсетілген жылдың мұғалімдер мерекесіне сәйкес келетін санын анықта.
Program f24_d1;
Label 1,2,3;
Var n,i,s,s1,d1,v,v1,d2,c : integer;
Begin writeln; write(‘ жылын енгіз’); read(n);
S:=1; for i:=1 to n-1 do begin
if (I mod 4)= 0 then v:=366 else v:=365;
if (I mod 100= 0) and (I mod 400 <>0) then v:=365 ;
s:=s+v;end; s1:=5*31+28+3*30;
if (n mod 4)= 0 then v1:=1 else v:=0;
if (n mod 100= 0) and (I mod 400 <>0) then v:=0;
s1:=s1+v1; s:=s+s1;d2:=s mod 7; c:=7-d2;
write(‘c,s1,d1,d2’,c,s1,d1,d2);
if c >7 then c:=c-7; write(‘f’,v); writeln; write(‘’);
End.
№90
Program f24_d1;
Label 1,2,3;
Var i,a,b,c,s,s1: integer;
D: array[1..12] of integer;
Begin 1: writeln; write(‘күн, ай және жылын енгіз’); read(a,b,c);
D[1]:=31; if c mod 2 =0 then d[2]:=29 else d[2]:=28;
If(c mod 100=0) and (c mod 400 <>0) then d[2]:=28;
D[3]:=31; d[4]:=30; d[5]:=31; d[6]:=30; d[7]:=31; d[8]:=31;
d[9]:=30; d[10]:=31; d[11]:=30; d[12]:=31;
if (a>d[b]) or (b> 12) or (c<0) then begin write(‘’); goto 1 end;
if b=1 then begin s:=a-1; goto 2 end;
s:=0;s1:=0;for i:=1 to b-1 do s:=s+d[i]; s:=s+a-1;
2: if b=12 then begin s1:=31- a; goto 3 end;
For i:=b to 12 do s1:=s1+d[i]; s1:=s1-a;
3: write(‘’, s); write(‘’,s1)
End.
№91 Шахмат королі. Өлшемі 8х8 болған шахмат тақтасында ақтың корлі мен қараның пешкалары (пешкалар саны 1-ден 8-ге дейінгі аралықта мән қабылдайды) орналасқан.
Ақтың королі тек үш бағытта қозғалады.
Тұрған қатарынан оңға қарай тік;
Диоганаль бойынша оңға қарай төмен;
Төмен;
Король пешкаларды жеуіне болады. Пешкалар бастапқы тұрған орындарынан қозғалмайды. Пешкалар шахмат ойындағыдай шабуылдайды, король пешкалар шабуылдайтын алаңдарға жүре алмайды Шахмат тақтасы латын алфавитінің А, B, C, D, T,F,G,H әріптерімен және 1-ден 8- ге дейінгі цифрлармен белгіленеді.
Тапсырма: Ақтың королі шахмат тақтасындағы көрсетілген торкөзге жету үшін жүруі керек болған ең аз қадамдар санын тап.
Кіру файылының форматы: Кіру файылының алғашқы сегіз қатарында шахмат тақтасымен ондағы тастардың орналасуы берілген. Король «К» әрпімен пешка «Р» әрпімен, ал бос орын «.» символымен бейнеленеді. Кіру файылының соңғы қатарында король баруы керек торкөздің аты көрсетілген.
Шығу файылының форматы: шығу файылында тек бірғана сан королдің көрсетілген торкөзге жету үшін жасауы керек ең аз қадам саны жазылған.
Кіру файлы: Korol.in
……..
……..
……..
..K….
……..
….P..
…..P.
H1
Шығу файлы: Korol.out
Есептің алгоритмі: Есепті шығаруда ең алдымен шахмат жазуы танитындай екі өлшемді кесте жасаймыз. Одан кейін екі өлшемді қосымша сандық кесте аламыз. Осы кестеде корольдің тұрған орнын «2» деп, пешкалардың шабуылдайтын торкөздерін «1» деп белгілеп аламыз.