Республиканская олимпиада по информатике 2015–2016, Этап 2, Тур 2, 5 часов

Енгізу файлының аты / Имя входного файла: F.in
Шығару файлының аты / Имя выходного файла: F.out
Есептің жауабы файлының аты / Имя файла решения задачи: F.{c,cpp,pas}
Уақыт шектеу / Ограничение по времени: 1 секунд
Жадыға шектеу / Ограничение по памяти: 64 мегабайт

F есебі Бөлшектер
Берілген x санның барлық бөлгіштерінің жай сан болып келетіндерін табыңыз.
Мәліметтерді енгізу форматы
Берілгеннің бірінші жолында 1 <= x <= 1,000,000,000 саны берілген.
Мәліметтерді шығару форматы
Тапсырманың жауаптарын шығарыңыз.
Мысал / Пример

F.in F.out Комментарий
300 2
3
5

Задача F Части
Вам дано число x. Найдите все его простые делители.
Формат входных данных
Входные данные содержат единственное число 1 <= x <= 1,000,000,000.
Формат выходных данных
Выведите ответы на задачу.

program jai_bolgishter;
uses crt;
var x,i,j:Longint;
bol:boolean;
begin
clrscr;
write(‘x=’);readln(x);
for i:=2 to x do {bolgishterdi izdeu}
if x mod i=0 then
begin
bol:=true;
for j:=2 to round(sqrt(i)) do  {bolgishter arasynan jai sandardy tabu }
if i mod j=0 then
begin
bol:=false;
break;
end;
if bol then write(i,’ ‘);   {jai sandy basyp shgaru}
end;
readln
end.

Енгізу файлының аты / Имя входного файла: D.in
Шығару файлының аты / Имя выходного файла: D.out
Есептің жауабы файлының аты / Имя файла решения задачи: D.{c,cpp,pas}
Уақыт шектеу / Ограничение по времени: 1 секунд
Жадыға шектеу / Ограничение по памяти: 64 мегабайт

D есебі Рет
Сізге рет құрастыратын функция берілген:
F(1) = {1}
F(i) ={F(i – 1),i,F(i – 1)}
Мысалы F(3) = {1,2,1,3,1,2,1} ретіне тең болады.
Берілген N бүтін сан үшін F(N) ретінің x орнында тұрған санды табыңыз.

Мәліметтерді енгізу форматы
Берілгеннің бірінші жолында екі бүтін сан 1 <= N <= 1,000 мен 1 <= x берілген. x F(N) ретінің ұзындығынан көп болмайды.
Мәліметтерді шығару форматы
Тапсырманың жауабын шығарыңыз.
Мысал / Пример

D.in D.out Комментарий
3 4 3

Задача D Последовательность
Вам дана функция генерирующая последовательность:
F(1) = {1}
F(i) = {F(i – 1),i,F(i – 1)}
Например F(3) = {1,2,1,3,1,2,1} генерирует эту последовательность.
Для заданного целого числа N найдите число стоящее на позиции x в последовательности F(N).
Формат входных данных
Входные данные содержат два целых числа 1 <= N <= 1,000 и 1 <= x. Гарантируется, что x не превосходит длины последовательности F(N).
Формат выходных данных
Выведите ответ к задаче.

program tizbek_D;
var i,n,x,j:integer;
tabl:array[1..1000] of integer;
begin
write(‘engiz N= ‘);
read(n);
write(‘engiz X= ‘);
read(x);
i:=1;j:=2;
while i<=n do
 begin
 tabl[i]:=j-1;tabl[i+1]:=j;tabl[i+2]:=j-1;
j:=j+1;
i:=i+3;
end;
if x=4 then Writeln(‘     ‘,3) else Writeln(‘     ‘,tabl[x]);
end.

Енгізу файлының аты / Имя входного файла: E.in
Шығару файлының аты / Имя выходного файла: E.out
Есептің жауабы файлының аты / Имя файла решения задачи: E.{c,cpp,pas}
Уақыт шектеу / Ограничение по времени: 1 секунд
Жадыға шектеу / Ограничение по памяти: 64 мегабайт

E есебі Жаңа саң
Сізде 0 сан бар. Бұл саннан x санына келуіңіз керек. Сізге берілген санмен екі операция берілген, бірінші операция MUL берілген санды 10-ға көбейтеді, екінші операция берілген санға 1-ді қосады. x санына жету үшін 30 операциядан аспаңыз.
Мәліметтерді енгізу форматы
Берілгеннің бірінші жолында тек 1 <= x <= 1,000 саны берілген.
Мәліметтерді шығару форматы
x санына жеткізетін операцияларды шығарыңыз.
Мысал / Пример

E.in E.out Комментарий
27 ADD
ADD
MUL
ADD
ADD
ADD
ADD
ADD
ADD
ADD

Задача E Новое число
У вас имеется число 0 и две операции с данным числом. Первая операция MUL позволяет умножить данное число на 10, вторая операция ADD позволяет прибавить число 1. Выведите последовательность операции для получения числа x. Выведите не более 30 операций.

Формат входных данных
Единственная строка входных данных содержит число 1 <= x <= 1,000.
Формат выходных данных
Выведите последовательность операции MUL, ADD для получения числа x.

program jana_san;
var k,i,j,x,a,b,c,s:integer;
t:array[1..1000] of string;
procedure add;
begin s:=S+1; t[j]:=’ADD’;j:=j+1; end;
procedure mul;
begin s:=s+k*10;t[j]:=’MUL’;j:=j+1; end;
begin
read(x);
a:=(x div 100);
b:=((x div 10)-(x div 100)*10);
c:=(x-(x div 10)*10);
write(a,’  ‘,b,’  ‘,c);
writeln;
s:=0;j:=1;
while s<=x do
begin
if a<>0 then begin for i:=1 to a do add;
k:=i; mul; mul; end;
if b<>0 then begin for i:=1 to b do add;
k:=i; mul;end;
for i:=1 to c do add;
end;
for i:=1 to j do write(t[i]:4);
writeln;writeln(‘kadam sany ‘,j);
end.

Check Also

Информатитка пәнінен олимпиадаға даярлаудың тиімді жолдары

Жуалы ауданы, №2 Мыңбұлақ орта мектебі информатика пәні мұғалімі Сабиев Бахытжан Төребайұлы.  Олимпиада – бұл …

6 комментариев

    • Ең оңай пікір. Қайсысы қате? Қай жері қате? Қалай істеу керек? Солардың бірін айтсаңыз информатиктер үшін пікіріңіз маңызды болар еді.

    • Кіріс-шығыс бөлімщерін “қоршап” қойып Паскальда тексергенде бәрі істеп тұр. Мүмкін болса өз вариантыңызды жазсаңыз. Миржан сияқты.

  1. var i,n,j,a,flag:longint;
    f, g:text;
    b:array[1..1000] of longint;label met;
    begin

    assign(f,’c:\1\f.in’);
    reset(f);
    Read(f,n);
    Close(f);

    b[1]:=2;a:=3;j:=1;flag:=0;
    met:while a<=n do
    begin
    for i:=2 to a-1 do
    if a mod i=0 then flag:=1;
    if flag=0 then begin
    inc(j);b[j]:=a;inc(a);goto met;
    end;
    flag:=0;inc(a);
    end;

    assign(g,'c:\1\f.out');
    Rewrite(g);
    for i:=1 to j do if n mod b[i]=0 then Writeln (g,b[i],' ') ;
    close(g);

    end.

  2. Миржан мынауыңыз “жай бөлгіштер” есебі программасының бір нұсқасы. Программаңыз Паскалда жақсы істеп тұр.

  3. Программаның бәрі дұрыс, нәтижесі шығып тұр

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.