Задание »

Pentamino – 2

ID: pentam2
Grūtība: 2/5
Laika limits: 1


Uzdevums

Pentamino figūras veido no pieciem kvadrātiem, novietojot tos tā, ka katram kvadrātam ir kopīga mala ar kādu citu.
Šoreiz izmantosim tikai pieca veida pentamino figūras:

Sauksim tās par A, B, C, D un E veida figūrām. Katra veida figūrai viens kvadrāts ir iekrāsots citādi. Sauksim to par attiecīgā veida figūras galveno kvadrātu.

Kvadrātveida rūtiņu laukumā, kura izmēri ir K*K rūtiņas, izvietosim ne vairāk kā 100 iepriekšminētā veida figūras tā, lai katras figūras kvadrāti sakristu ar laukuma rūtiņām, un katra no figūrām pilnībā ietilptu laukumā. Figūras drīkst pārklāties. Figūras nedrīkst būt pagrieztas vai apgrieztas. Laukuma kolonnas ir sanumurētas no kreisās puses uz labo ar naturāliem skaitļiem no 1 līdz K pēc kārtas. Analoģiski no lejas uz augšu ir sanumurētas arī rindas.

Jūsu uzdevums ir uzrakstīt programmu, kas nosaka, cik no laukuma rūtiņām noklāj vismaz viena pentamino figūra.

Ievaddati

Teksta faila pentam2.in pirmā rinda satur naturālu skaitli K, 1 <= K <= 100, kas apzīmē laukuma malas garumu.
Faila otrā rinda satur naturālu skaitli N, 1 <= N <= 100, kas apzīmē uz laukuma izvietoto pentamino figūru skaitu.
Katrā no nākošajām N faila rindām tiek dotas kādas figūras apraksts formā

burts kolonnas_numurs rindas_numurs

, kur burts norāda attiecīgās figūras veidu (A,B,C,D vai E), bet kolonnas un rindas numurs norāda laukuma rūtiņu, kuru noklāj šīs figūras galvenais kvadrāts. Starp burtu un kolonnas numuru, kā arī starp kolonnas numuru un rindas numuru ir viens tukšumsimbols.

Izvaddati

Teksta faila pentam2.out vienīgajā rindā jāizvada viens naturāls skaitlis – laukuma rūtiņu skaits, ko noklāj dotās pentamino figūras.

Piemērs

pentam2.in pentam2.out
8
5
A 2 5
D 5 7
B 7 6
D 8 1
E 4 6
23

Atsauces

Uzdevums ideja ņemta no uzdevuma, kas izmantots ACSL sacensībās 1996./97. gadā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

program pentam1;
var f:text; a,b,i,n,s:byte; t:char; arr:array [1..101,1..101] of byte;
procedure add();
 begin
  arr[a,b]:=1;
  case t of
   'A': begin arr[a,b-1]:=1; arr[a,b-2]:=1; arr[a+1,b-2]:=1; arr[a+2,b-2]:=1; end;
   'B': begin arr[a+1,b]:=1; arr[a+1,b-1]:=1; arr[a,b-1]:=1; arr[a,b-2]:=1; end;
   'C': begin arr[a+1,b]:=1; arr[a-1,b]:=1; arr[a+1,b-1]:=1; arr[a-1,b-1]:=1; end;
   'D': begin arr[a,b+1]:=1; arr[a-1,b]:=1; arr[a-2,b]:=1; arr[a-3,b]:=1; end;
   'E': begin arr[a,b+1]:=1; arr[a-1,b]:=1; arr[a-2,b]:=1; arr[a-2,b-1]:=1; end;
  end;
 end;
{========================}
begin
assign(f,'pentam2.in');
reset(f);
readln(f,s);
readln(f,n);
for i:=1 to n do
 begin
  readln(f,t,a,b);
  add();
 end;
close(f);

a:=0;
for i:=1 to s do
 for n:=1 to s do
  a:=a+arr[i,n];

assign(f,'pentam2.out');
rewrite(f);
writeln(f,a);
close(f);
end.

Результат: 10/10

Задача по аналогии с предыдущей, поэтому пришлось дописать не много. =)

Задание »

Faktoriāla nulles

ID: fanulles
Grūtība: 1/5
Laika limits: 1


Uzdevums

Naturāla skaitļa n faktoriālu (apzīmē «n!») aprēķina, sareizinot visus naturālos skaitļus no 1 līdz n :
n! = 1*2*…*(n-1)*n .

Uzrakstiet programmu, kas dotai n vērtībai nosaka, ar cik nullēm beidzas n faktoriāla pieraksts!

Ievaddati

Teksta faila fanulles.in vienīgajā rindā dots naturāls skaitlis – n vērtība (n<=109).

Izvaddati

Teksta faila fanulles.out vienīgajā rindā jāizvada viens vesels skaitlis nuļlu skaits n! pieraksta beigās.

Piemērs

fanulles.in fanulles.out
3
0
fanulles.in fanulles.out
10
2
fanulles.in fanulles.out
54321
13576

© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

program fanulles;
var f:text; a,b,d:longint;
begin
assign(f,'fanulles.in');
reset(f);
readln(f,a);
close(f);

if a<5 then b:=0
else begin
 d:=5;
 while a>=d do
  begin
  b:=b+(a div d);
  d:=d*5;
  end;
end;

assign(f,'fanulles.out');
rewrite(f);
writeln(f,b);
close(f);
end.

Результат: 10/10

Вот поперло, 2 задачи за такой короткий срок. Урааааааааааааааа!!! С Рождествоом!!!

Задание »

Pentamino

ID: pentam1
Grūtība: 1/5
Laika limits: 1


Uzdevums

Pentamino figūras veido no pieciem kvadrātiem, novietojot tos tā, ka katram kvadrātam ir kopīga mala ar kādu citu.
Šoreiz izmantosim tikai trīs veida pentamino figūras:

Sauksim tās par A, B un C veida figūrām. Katra veida figūrai viens kvadrāts ir iekrāsots citādi. Sauksim to par attiecīgā veida figūras galveno kvadrātu.

Kvadrātveida rūtiņu laukumā, kura izmēri ir 8*8, izvietosim ne vairāk kā 10 iepriekšminētā veida figūras tā, lai katras figūras kvadrāti sakristu ar laukuma rūtiņām, un katra no figūrām pilnībā ietilptu laukumā. Figūras drīkst pārklāties. Figūras nedrīkst būt pagrieztas vai apgrieztas. Laukuma kolonnas ir sanumurētas no kreisās puses uz labo ar naturāliem skaitļiem no 1 līdz 8 pēc kārtas. Analoģiski no lejas uz augšu ir sanumurētas arī rindas.

Jūsu uzdevums ir uzrakstīt programmu, kas nosaka, cik no 64 laukuma rūtiņām noklāj vismaz viena pentamino figūra.

Ievaddati

Teksta faila pentam1.in pirmā rinda satur naturālu skaitli N, 1 <= N <= 10, kas apzīmē uz laukuma izvietoto pentamino figūru skaitu. Katrā no nākošajām N faila rindām tiek dotas kādas figūras apraksts formā

burts kolonnas_numurs rindas_numurs

, kur burts norāda attiecīgās figūras veidu (A,B vai C), bet kolonnas un rindas numurs norāda laukuma rūtiņu, kuru noklāj šīs figūras galvenais kvadrāts. Starp burtu un kolonnas numuru, kā arī starp kolonnas numuru un rindas numuru ir viens tukšumsimbols.

Izvaddati

Teksta faila pentam1.out vienīgajā rindā jāizvada viens naturāls skaitlis – laukuma rūtiņu skaits, ko noklāj dotās pentamino figūras.

Piemērs

pentam1.in pentam1.out
5
A 2 5
C 5 7
B 7 6
C 8 1
A 4 3
22

Atsauces

Uzdevums izmantots ACSL sacensībās 1996./97. gadā.


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

program pentam1;
var f:text; a,b,i,n:integer; t:char; arr:array [1..9,1..9] of byte;
procedure add();
 begin
  arr[a,b]:=1;
  case t of
   'A': begin arr[a,b-1]:=1; arr[a,b-2]:=1; arr[a+1,b-2]:=1; arr[a+2,b-2]:=1; end;
   'B': begin arr[a+1,b]:=1; arr[a+1,b-1]:=1; arr[a,b-1]:=1; arr[a,b-2]:=1; end;
   'C': begin arr[a,b+1]:=1; arr[a-1,b]:=1; arr[a-2,b]:=1; arr[a-3,b]:=1; end;
  end;
 end;
{========================}
begin
assign(f,'pentam1.in');
reset(f);
readln(f,n);
for i:=1 to n do
 begin
  readln(f,t,a,b);
   add();
 end;
close(f);

a:=0;
for i:=1 to 8 do
 for n:=1 to 8 do
  a:=a+arr[i,n];

assign(f,'pentam1.out');
rewrite(f);
writeln(f,a);
close(f);
end.

Результат: 10/10

Вот моя свеже испеченная программа, написал с первого раза и получил 10/10. Редко такое бывает. =)

Данный алгоритм содержит в себе главные основы в паскале, как работать с файлами, использование разного типа переменных, использование меню.

Код »

program myprg;
uses crt;
type user=record
number:string;
percode:string;
fname:string;
lname:String;
adress:string;
diag:string;
end;
{--}
const
dBase='database.dat';
var
i,z,m,en:integer;
answ,answ1:char;
s,r:string;
f:text;
users:array[1..10] of user;
{-----}
procedure checkData;
begin
assign(f,dBase);
{$I-}reset(f);{$I+}
if IoResult<>0 then rewrite(f);
close(f);
end;
{-----}
procedure add;
begin
assign(f,dBase);
append(f);
clrscr;
writeln('Pievienot pie saraksta jaunus pacientus');
writeln('');
for i:=1 to 3 do
begin
 writeln('Informacija par paciantu (',i,'/3):');
 write('Numuru(ID):');
 readln(users[i].number);
 writeln(f,users[i].number);
 write('Personas kods:');
 readln(users[i].percode);
 writeln(f,users[i].percode);
 write('Vards:');
 readln(users[i].fname);
 writeln(f,users[i].fname);
 write('Uzvards:');
 readln(users[i].lname);
 writeln(f,users[i].lname);
 write('Adrese:');
 readln(users[i].adress);
 writeln(f,users[i].adress);
 write('Slimiba:');
 readln(users[i].diag);
 writeln(f,users[i].diag);
 writeln(f,'==NEXT==');
 if(i<3) then
 begin
 writeln('');
 write('Pievienot informaciju par citu pacientu? Izvele(y/n):');
 readln(answ);
 if(answ='n') then break;
 end
 else
 begin
 writeln('');
 writeln('***********************************************************');
 writeln('*Atvainojiet, viena reizi var pievienot tikai 3 pierakstus*');
 writeln('***********************************************************');
 writeln('');
 end;
end;
close(f);
writeln('');
end;
{-----}
procedure search;
begin
clrscr;
writeln('Pacientu meklesana');
writeln('');
write('Ievadiet klienta numuru:');
readln(s);
writeln('');
assign(f,dBase);
reset(f);
i:=0;
en:=0;
repeat
inc(i);
readln(f,r);
if(i=1) and (r=s) then en:=1;
if(i=1) and (en=1) then writeln('Clienta numurs (ID):',r);
if(i=2) and (en=1) then writeln('Personas code:',r);
if(i=3) and (en=1) then writeln('Vards:',r);
if(i=4) and (en=1) then writeln('Uzvards:',r);
if(i=5) and (en=1) then writeln('Adress:',r);
if(i=6) and (en=1) then writeln('Diagnoss:',r);
if(r='==NEXT==') then begin i:=0; if en=1 then break; end;
until eof(f);
writeln('');
writeln('');
close(f);
if(en=0) then writeln('Atvainojiet, pacientu ar tadu numuru nav');
writeln('');
writeln('');
write('Meklet citu pacientu?(y/n):');
readln(answ);
if(answ='y') then search;

end;
{-----}
procedure exit;
begin
while (answ1<>'n') and (answ1<>'y') do
begin
write('Iziet no programmas? Izvele(y/n):');
readln(answ1);
end;
end;
{-----}
procedure viewAll;
begin
clrscr;
writeln('Parskats par pacientiem:');
writeln('');
assign(f,dBase);
reset(f);
i:=0;
en:=0;
while eof(f)=false do begin
inc(i);
readln(f,r);
en:=1;
if(i=1) then writeln('Pacienta numurs (ID):',r);
if(i=2) then writeln('Personas code:',r);
if(i=3) then writeln('Vards:',r);
if(i=4) then writeln('Uzvards:',r);
if(i=5) then writeln('Adress:',r);
if(i=6) then writeln('Diagnoss:',r);
if(r='==NEXT==') then begin i:=0;writeln('');writeln('   ***   ');writeln(''); end;
end;
writeln('');
close(f);
if(en=0) then writeln('Nav informacijas');
writeln('');
end;
{-----}
procedure clearData;
begin
clrscr;
writeln('Visu datu dzesana');
writeln('');
write('Dzest visu informaciju? (y/n):');
readln(answ);
writeln('');
if(answ='y') then
begin
assign(f,dBase);
rewrite(f);
close(f);
writeln('Visa informacija tika dzesta!');
end;
writeln('');
writeln('');
end;
{-----}
procedure menu;
begin
answ1:='0';
clrscr;
checkData;
writeln('Menu:');
writeln('1.Pievienot jaunu lietotaju');
writeln('2.Parskatit visus pacientus');
writeln('3.Meklet paciantu');
writeln('4.Dzest visu informaciju');
writeln('5.Iziet');
write('Jusu izvele:');
readln(m);
if(m<>1) and (m<>2) and (m<>3) and (m<>4) and (m<>5) then menu;
case m of
1:add;
2:viewAll;
3:search;
4:clearData;
end;
 if(m<>5) then begin
 writeln('');
 write('Pariet pie galvena satura? Izvele(y/n):');
 readln(answ);
 if(answ='y') then menu;
 end;
 writeln('');
 writeln('');
 exit;
 if answ1='n' then menu;

end;
{-----}
begin
menu;
{readln;  }
end.

Автор: LLIypuk

Ну вот выложил задачки, это пока что все, что я нашел. Пару задачек пропущено, может позже найду:

Сегодня я их протестирую на сайте lio.lv и выложу результаты. Если увидите баги или просто хотите высказаться, то пишите комментарии, пообщаемся. =)

Задание »

Ciparu virkne

ID: cipvirk
Grūtība: 1/5
Laika limits: 1


Uzdevums

Ciparu virknē a1,a2,a3,…. katrs loceklis sākot no trešā ir vienāds ar iepriekšējo divu virknes locekļu summas pēdējo ciparu.
Uzrakstiet programmu, kas dotiem a1,a2 un n atrod an. n<32768.

Ievaddati

Teksta faila cipvirk.in vienīgajā rindā dotas trīs veselu skaitļu a1,a2 un n vērtības.
Zināms, ka 0<=a1<=9; 0<=a2<=9; 0<n<32768.
Starp katriem diviem blakus skaitļiem ir viens tukšumsimbols.

Izvaddati

Teksta faila cipvirk.out vienīgajā rindā jāizvada vesels skaitlis – an vērtība.

Piemērs

cipvirk.in cipvirk.out
1 7 12
8

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes II (rajona) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var c3,c1,c2,i,n:integer;
f:text;
begin
Assign(f,'cipvirk.in');
Reset(f);
read(f,c1,c2,n);
Close(f);
for i:=1 to n-1  do begin
c3:=c1 mod 10 + c2 mod 10;
c1:=c2;
c2:=c3;
end;
Assign(f,'cipvirk.out');
Rewrite(f);
write(f,c1 mod 10);
Close(f);
end.

Результат: 10/10

Задание »

Teksts latviski

ID: latv
Grūtība: 1/5
Laika limits: 1


Uzdevums

Sensenos laikos, kad vēl nebija ne Microsoft, ne Word, ne Excel, latvieši burtu ar diakritiskajām zīmēm pierakstīšanai datorā izmantoja sekojošus principus:

  • patskaņus ā,ē,ī,ū apzīmēja attiecīgo īso patskani dubultojot (aa,ee,ii,uu),
  • līdzskaņus ģ,ļ,ķ,ņ apzīmēja aiz attiecīgā nemīkstinātā līdzskaņa liekot burtu ‘j’ (gj,lj,kj,nj),
  • līdzskaņus (č,š,ž) apzīmēja aiz attiecīgā līdzskaņa liekot burtu ‘h’ (ch,sh,zh).

Visi citi burti datorā tika pierakstīti tāpat kā jebkurā tekstā.
Piemēram, teksts «pļavā nekad neēd svešas puķītes» datorā tika pierakstīts kā «pljavaa nekad neeed sveshas pukjiites».

Tiesa, atpakaļ atkodēt varēja ne visus tekstus.
Piemēram, nepārzinot latviešu valodu, nevar noteikt, ka vārdam «neeed» atbilstošais vārds nav «nēed».
Bet par šādiem īpašiem gadījumiem Jums nav jāuztraucas.

Uzrakstiet programmu, kas dotam datorā pierakstītajam tekstam (pēc iepriekšaprakstītajiem noteikumiem) nosaka, kāds mazākais burtu skaits varēja būt oriģinālajā tekstā!

Ievaddati

Teksta faila latv.in vienīgajā rindā dota simbolu virkne, kas sastāv no latviešu valodas mazajiem burtiem bez diakritiskajām zīmēm ar tukšumsimboliem kā vārdu atdalītājiem.
Virknes kopgarums nepārsniedz 250 simbolus.
Zināms arī, ka ievadītajā virknē ir vismaz viens burts un starp blakus esošiem vārdiem ir viens vai vairāki tukšumsimboli.

Izvaddati

Teksta faila latv.out vienīgajā rindā jāizvada naturāls skaitlis – mazākais iespējamais burtu skaits oriģinālajā tekstā.

Piemērs

latv.in latv.out
pljavaa nekad neeed sveshas pukjiites
27

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes II (rajona) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var r:string;
l,i:integer;
f:text;
begin
Assign(f,'latv.in');
Reset(f);
read(f,r);
Close(f);

l:=0;
i:=1;
while i<=length(r) do begin
case r[i] of
  'a': begin if r[i+1]='a' then begin i:=i+2; inc(l); end else inc(i);  end;
  'e': begin if r[i+1]='e' then begin i:=i+2; inc(l); end else inc(i);  end;
  'i': begin if r[i+1]='i' then begin i:=i+2; inc(l); end else inc(i);  end;
  'u': begin if r[i+1]='u' then begin i:=i+2; inc(l); end else inc(i);  end;
  'g': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'l': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'k': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'n': begin if r[i+1]='j' then begin i:=i+2; inc(l); end else inc(i);  end;
  'c': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  's': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  'z': begin if r[i+1]='h' then begin i:=i+2; inc(l); end else inc(i);  end;
  ' ': begin inc(l); inc(i); end;
  else inc(i);
end;
end;

Assign(f,'latv.out');
Rewrite(f);
write(f,length(r)-l);
Close(f);
end.

Результат: 10/10

Задание »

CIK?

ID: cik
Grūtība: 1/5
Laika limits: 1


Uzdevums

Naturāliem skaitļiem x un decimāliem cipariem y var definēt funkciju

CIK(x,y) ::= mazākais naturālais skaitlis kāds jāpieskaita pie x, lai iegūtu skaitli, kura decimālais pieraksts satur ciparu y.

Tā, piemēram, CIK(8,3) = 5 (jo 8+5=13), bet CIK(16,1) = 1 (jo 16+1=17).
Uzrakstiet programmu, kas ievadītiem x un y atrod CIK(x,y)!

Ievaddati

Teksta faila cik.in pirmajā rindā dots naturāls skaitlis x un cipars y , kas atdalīti ar tukšumsimbolu.
Zināms, ka 0<x<109.

Izvaddati

Teksta faila cik.out vienīgajā rindā jāizvada funkcijas CIK(x,y) vērtība.

Piemērs

cik.in cik.out
93 1
7

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes I (skolas) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var x,cis:longint;
y,ch,code,i:integer;
x_s:string;
b:boolean;
f:text;
begin
Assign(f,'cik.in');
Reset(f);
read(f,x,y);
Close(f);
cis:=x;
b:=false;
while b=false do begin
inc(cis);
str(cis,x_s);
for i:=1 to length(x_s) do begin
val(x_s[i],ch,code);
if ch=y then begin b:=true; break; end;
end;
end;
Assign(f,'cik.out');
Rewrite(f);
write(f,cis-x);
Close(f);
end.

Результат: 10/10

Задание »

Supersumma

ID: super
Grūtība: 1/5
Laika limits: 1


Uzdevums

Jebkuram naturālam skaitlim n var aprēķināt ciparu summu.
Arī šai iegūtajai summai var aprēķināt ciparu summu.
Tā turpinot, kādreiz noteikti iegūs vienciparu skaitli.
Sauksim to par n supersummu.
Uzrakstiet programmu, kas dotiem diviem naturāliem skaitļiem k un m atrod reizinājuma k*m supersummu!

Ievaddati

Teksta faila super.in satur divas rindas.
Pirmajā rindā dota skaitļa k, bet otrajā – skaitļa m vērtība.
Zināms, ka neviena skaitļa ciparu skaits nepārsniedz 200.

Izvaddati

Teksta faila super.out vienīgajā rindā jāizvada viens skaitlis – k*m supersumma.

Piemērs

super.in super.out
41
17
4

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes I (skolas) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var i,od,code,k_i,m_i:integer;
k,m,t:string;
f:text;
begin
Assign(f,'super.in');
Reset(f);
readln(f,k);
readln(f,m);
Close(f);
if length(m)>length(k) then begin
t:=m;
m:=k;
k:=t;
end;
while (length(k)>1) or (length(m)>1) do begin
k_i:=0;
m_i:=k_i;
for i:=1 to length(k) do
begin
Val(Copy(k,i,1),od,code);
k_i:=k_i+od;
if i<=length(m) then begin
Val(Copy(m,i,1),od,code);
m_i:=m_i+od;
end;
end;
Str(k_i,k);
Str(m_i,m);
if length(m)>length(k) then begin
t:=m;
m:=k;
k:=t;
end;
end;
od:=k_i*m_i;
str(od,k);
if length(k)>1 then begin
k_i:=od div 10 + od mod 10;
str(k_i,k);
if length(k)>1 then k_i:=k_i div 10 + k_i mod 10;
end
else k_i:=od;
Assign(f,'super.out');
Rewrite(f);
write(f,k_i);
Close(f);
end.

Результат: 10/10

Задание »

Atlikums

ID: atlikums
Grūtība: 1/5
Laika limits: 1


Uzdevums

Ievadītiem naturāliem skaitļiem A (kura ciparu skaits nepārsniedz 250) un N (1<N<10000) aprēķināt atlikumu, kas rodas skaitli A dalot ar N.

Ievaddati

Teksta faila atlikums.in pirmajā rindā dota skaitļa A, bet otrajā – skaitļa N vērtība.

Izvaddati

Teksta faila atlikums.out vienīgajā rindā jāizvada atlikuma, kas rodas A dalot ar N, vērtība.

Piemērs

atlikums.in atlikums.out
1234567890
777
360

Atsauces

Uzdevums izmantots «Baltijas algoritmizācijas skolas» projektā, kas tika organizēts ar «Sorosa fonds-Latvija» atbalstu 1996.gadā.
Autori: M.Opmanis, G.Lazdiņa


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var d2:longint;
k:array [1..255] of longint;
s,nt:string;
i,j,code:integer;
f:text;
begin
Assign(f,'atlikums.in');
Reset(f);
readln(f,s,d2);
Close(f);
i:=1;
while length(s)>=1 do
begin
nt:=copy(s,1,1);
Val(nt,k[i],code);
delete(s,1,1);
i:=i+1;
end;
for j:=1 to i-1 do
begin
k[j]:=(k[j] mod d2)*10;
k[j+1]:=k[j]+k[j+1];
end;
j:=trunc(k[j]/10);
Assign(f,'atlikums.out');
Rewrite(f);
write(f,j);
Close(f);
end.

Результат: 10/10