Информатика 2010-2011. Олимпиада есептері шығарылуымен.
Бұл мақала 10946 рет оқылды, 7 рет бүгін
F есебі минималды қосынды
Матемтаика сабағында мұғалім N сан жазды. Соңғы партада отырған Бахытжан, тізбектегі қатар жазылған сандардың минималды қосындысы қаншаға тең болатыны жайлы ойланып қалды. Бақытжанға көмектесіңіз, керекті санды қосындыны табатын бағдарламаны жазыңыз.
І-тур
А есебіProgram bakytty_kun; var a,b,c,d,e,y,z:integer; {е-akpan} BEGIN write(‘ai (01-kantar, 02-akpan…)- ‘); readln(a); write(‘kun - ‘); readln(b); write(‘jyl (от 1901 до 2099) - ‘); readln(c); write(‘apta kuni (1-duisembi, 2-seisembi…)- ‘); readln(d); IF(c mod 4=0) THEN e:=29 ELSE e:=28; {vicokosnyi jyldy tekseru} Case (a) of 1: z:= (b-1) mod 7; 2: z:= (31 + (b-1)) mod 7; 3: z:= (31 + e + (b-1)) mod 7; 4: z:= (62 + e + (b-1)) mod 7; 5: z:= (92 + e + (b-1)) mod 7; 6: z:= (123 + e + (b-1)) mod 7; 7: z:= (153 + e + (b-1)) mod 7; 8: z:= (184 + e + (b-1)) mod 7; 9: z:= (215 + e + (b-1)) mod 7; 10: z:= (245 + e + (b-1)) mod 7; 11: z:= (276 + e + (b-1)) mod 7; 12: z:= (306 + e + (b-1)) mod 7; 13: z:= (337 + e + (b-1)) mod 7; end; y:=d+z; case (y) of 1,8: write (b,’.',a,’.',c,’ - ‘,’duisembi’); 2,9: write (b,’.',a,’.',c,’ - ‘,’seisembi’); 3,10: write (b,’.',a,’.',c,’ - ‘,’sarsembi’); 4,11: write (b,’.',a,’.',c,’ - ‘,’beisembi’); 5,12: write (b,’.',a,’.',c,’ - ‘,’juma’); 6,13: write (b,’.',a,’.',c,’ - ‘,’sembi’); 7,14: write (b,’.',a,’.',c,’ - ‘,’jeksembi’); end; end. 9-сынып, І-тур А есебі program stroka; |
В есебі.program tizbek; var i,n,l:longint; s:string; label 10; begin writeln(‘san tizbegin engiz ‘); read(s); writeln(‘retin engiz ‘); read(n); l:=length(s); for i:=1 to l do if i=n then begin write(s[n]); goto 10; end; 10:end. С есебі. program angime; |
F есебі минималды қосынды
Матемтаика сабағында мұғалім N сан жазды. Соңғы партада отырған Бахытжан, тізбектегі қатар жазылған сандардың минималды қосындысы қаншаға тең болатыны жайлы ойланып қалды. Бақытжанға көмектесіңіз, керекті санды қосындыны табатын бағдарламаны жазыңыз.
Мәліметтерді енгізу форматы:
Енгізу файлдың бірінші жолында n - сандардың саны берілген (1 <= n <= 1000). Екінші жолда әрқайсысы модулі бойынша 1 000 000 000 -дан аспайтын n сан беріледі.
Мәліметтерді шығару форматы
Ұатар жазылған сандардың минмиалды қосындысын шығарыңыз
Мысал:
F.in | F.out | Түсініктеме |
7
-7 10 -2 -3 4 -7 1 |
-8 | Қатар жазлыған сандардың минимал қосындысы 3-орыннан басталып 6-орынмен а\қталады: (-2)+(-3)+4+(-7)=-8 |
Бағадарлау иеясы:
Алгоритм екі бөлімнен тұрады. Алдымен сол шеттен бастап оң жақ ештке дейін қосындылаймыз. Әр циклде оң жақ щет бір орынға кеміп (k2:=n-i+k+1;) отырады. k1=k2 болғанда оң жақ шетті бір орын кемітіп тағы да қосындылаймыз. Бұл жолы да әр цикл сайын оң жақ шет бір орынға кеміп (k2:=n-i+k+1;) отырады.
Тізбекті сол жақтағы 1-ші (k1) саннан бастап оң жақ шеттегі соңғы санға (k2) дейін қосып шығамыз, нәтижені S (procedure sum деп аламыз
Тізбекті сол жақтағы 1-ші (k1) саннан бастап оң жақтағы соңғының алдындағы санға дейін (k2:=n-i+k+1;) нәтижені min деп аламыз.
Егер min>s онда min:=s деп өзгертеміз
Осылайша k1=k2 болғанша жалғастырамыз. Еегер k1=k2 болса k:=k+1 k1:=k; операторларын орындап, сол жақтағы келесі саннан бастап осы алгоритмді бірінші жолдан бастап орындаймыз.
program mini_kosyndy;
var i,k1,k2,j,k,min,s:integer;
n:longint;
a:array[1..1000000] of longint;
procedure sum;
begin
s:=0;
for j:=k1 to k2 do s:=s+a[j];
end;
begin
write(‘kansha san n= ‘); read(n);
writeln(‘Sandar kataryn engiz ‘);
for i:=1 to n do Read(a[i]);
k:=1;min:=0;s:=0;i:=1;
while i<=2*n do
begin
if min>s then min:=s;
k1:=k; k2:=n-i+k+1;if k1=k2 then begin k:=k+1; i:=k;end;
sum;
i:=i+1;
end;
writeln(‘minsumma= ‘,min);
end.
ІІ-тур.Е есебі.
program ademi_takyryp; |
F есебіprogram mini_kosyndy; var i,k1,k2,j,k,min,s:integer; n:longint; a:array[1..1000000] of longint; procedure sum; begin s:=0; for j:=k1 to k2 do s:=s+a[j]; end; begin write(‘kansha san n= ‘); read(n); writeln(‘Sandar kataryn engiz ‘); for i:=1 to n do Read(a[i]); k:=1;min:=0;s:=0;i:=1; while i<=2*n do begin if min>s then min:=s; k1:=k; k2:=n-i+k+1;if k1=k2 then begin k:=k+1; i:=k;end; sum; i:=i+1; end; writeln(‘min=’,min); end. |
D есебі.program kinoteatr; var i,n:integer; k,l:longint; begin write(‘kinoteatr sany ‘); read(n); for i:=1 to n do begin writeln; write(‘katar sany ‘); read(k); write(‘katardagy oran sany ‘);read(l); writeln; if ((k mod 2)=1) and ((l mod 2)=1) then Write(‘ GOOD’) else Write(‘ NOT GOOD’); end; end. |
Ұқсас тақырыптар:
- ІІ-тур. Информатикадан 2011-2012 жылғы аудандық олимпиадасы, 2-этап.
- Паскалдан жиі қолданыстағы тақырыптық есептер (40 есеп+шешуі).
- Информатика-9. Символдық мәліметтермен жұмыс тәсілдері (2 сағ).
- Паскаль. «Бақытты билет», Бүтін санды жай көбейтінділерге бөлшектеу, ASCII таблицасын шығару, Фамилияларды сұрыптау, Хоар процедурасы
- Pascal-да программалар: 2-лік->10 сан, 10-дық->2 сан, 4 амал, Қазақша жыл.
- Информатика. Аудандық олимпиада есептерінің шығарылуы, II этап, 2008-2009
- Информатикадан мектеп олимпиадасы 2011-2012
- 2008-2009 Олимпиада есептері шешулерімен.
- Инф-9. Паскалда есеп шығару.
- Гольдбах жорамалы. Паскальда программалау.
Такырыптык тест трапсырмалары