середа, 9 грудня 2020 р.

Олімпіада програмування 2020р

 

Задача 1. Сума (20 бал.)

Розробіть програму для обчислення значення виразу з n цілих чисел (1<n<104), який представлено за правилом:

1-2+3-4+5-6+…

 

Задача 2. Годинник (30 бал.)

Годинник з боєм відбиває кількість ударів відповідно до годин на циферблаті, й відбиває один удар, коли хвилинна стрілка вказує на 6. Знаючи початковий та кінцевий час однієї доби (в годинах і в хвилинах), обчислити загальну кількість ударів за цей проміжок часу.

 

Задача 3. Найдовша послідовність(50 бал.)

В заданому N-значному числі M залишити найдовшу послідовність сусідніх різних цифр й визначити на яких місцях у числі М стоять перша і остання цифра цієї послідовності. N може змінюватися від 1 до 100.

Приклад вхідних та вихідних даних.

Input.txt

202132911

Задане число М

Output.txt

3291

5 8

Найдовша послідовність

Місця першої і останньої цифри найдовшої послідовності

 

Задача1 

n=int(input())
s=0
for i in range (1,n+1):
    if i%2>0:
        s+=i
    else:
        s-=i
print (s) 

Завдання№3


var

  a: array [1..101] of int64;

  b : Array [1..101] of string;

  S,S1: string;

  N,i,j,D,l,E: integer;

  max: int64;

  begin

  for I:=1 to 101 do

    B[i]:='';

  read(S);

  N:=Length (S);

  for i:=1 to N do

    for j:=i to N do

      if (pos (S[j],B[i]))=0 then B[i]:=B[i]+S[j]// запись не повторяющихся чисел в массив Б

      else break;

  for i:=1 to N do

    begin

    Val(B[i],A[i],E);//перевод строки в число

    //write (A[i],' ');

    end;

  

   max:=A[1];

 for I:=1 to n do

  if max<A[i] then begin// поиск максимального

    max:=A[i];

  

    end;

  str(max,S1);// перевод максимального в строку

  L:=pos(S1,S);//определяем порядковый номер вхождения максимального в строку

  Writeln (max);

  d:=Length(S1);// длина максимального

  D:=D+l-1;

  write (L,' ',D );

 

  end.

 

 Завдання 1

program zadaza1;

var

i,n,S : int64;

f,f1 : text;

begin

Assign (f,'input.txt');

Reset (f);

read(f,N);

close (f);

S:=0;

for I:=1 to N do

if (I mod 2) >0 then S:=S+i else S:=S-i;

Assign (f1,'output.txt');

Rewrite (f1);

write (f1, S);

close (f1);

end.

  Завдання 2 (частково)

program zadaza2;

var

G1,X1,G2,X2, G,X,i : integer;

t,t1,t2: longint;

begin

write ('введіть години та хвилини початку =');

read (G1,X1);

write ('введіть години та хвилини кінця =');

read (G2,X2);

G:=0;

if (X1<=30) then T1:=1 else T1:=0;

if (X2>=30) then T2:=1 else T2:=0;

if (G2>=G1) then

  if X1=0 then

    for I:=g1 to g2 do

      G:=G+i

  else

    for I:=g1+1 to g2 do

      G:=G+i;

 

 T:=g2-(g1+1)+t1+t2;

 G:=g+t;

 write (g);

end.

 задача 3 (интересный вариант)

var

i,j,n,D,D1,Y : integer;

X,S,S1 : string;

begin

read (X);

N:=Length (X);

s1:=X[1];

D:=1;

for I:=1 to n do

  begin

  S:='';

  for J:=i to n do

    if Pos (X[j],S)=0 then S:=S+X[j] else break ;

  D1:=Length (S);

  if D1>D then 

    begin

      s1:=S;

      D:=D1;

    end;

  end; 

Writeln (S1);

Y:= pos(s1,X);

Write (Y,' ');

Write (Y+D-1);

end.

задача 3

s='202132911'

n=len (s)

#for i in range (n):

#    print (s[i])

s2=int(s[0])

l=0

for i in range (n):

    s1=''

    for j in range (i,n):

        if not (s[j] in s1):

            s1+=s[j]

            if int(s1)>s2:

                s2=int(s1)

                l=i

        else:

            #print (s1)

            

            break

print (s2)

print (l+1,' ',end='')

print (l+len(str(s2)))

Задача 3

s='12112300'

s2=s[0]

for i in range (len(s)):

    s1=''

    s3=s[i:]

    for j in s3:

        if not(j in s1):

            #print(j)

            s1+=j

            if len(s1)>len(s2):

                s2=s1

        else:

            break

print (s2)

l=s.index (s2)+1

print (l,' ',end='')

print (len (s2)+l-1)

 

Немає коментарів:

Дописати коментар