Бодолт илгээх | Бүх бодолтууд | Шилдэг бодолтууд | Жагсаалт руу буцах |
RGB8041 - Үйлдлийн тоо |
р141.pas эрэмбэлэлтийн програм өгөгдөв. Энэхүү програмыг ашиглан тодорхой нэгэн массивыг эрэмбэлэхэд массивын хоёр элементийг жиших үйлдэл ( програмын 25-р мөр ) хэдэн удаа хийгдэхийг ол.
Input
Эхний мөрөнд N тоо. ( 1<=N<=100)
Дараагийн мөрөнд модулиараа 1000-аас хэтрэхгүй N бүхэл тоо өгөгдөнө.
Output
Эрэмбэлэлтийн програм ашиглан массивыг эрэмбэлэхэд хоёр элементийг жиших үйлдэл хэдэн удаа ашиглагдсан тоо.
Example
Input:
5
3 1 2 4 2
Output:
10
const nmax=100;
var a:array[1..nmax] of integer;
n:integer;
i,j,g:integer;
f1,f2:text;
begin
assign(f1,'input.txt');
reset(f1);
assign(f2,'output.txt');
rewrite(f2);
{—⥨¥ ¢å®¤ëå ¤ ëå}
read(f1,n);
for i:=1 to n do read(f1,a[i]);
{‘®àâ¨à®¢ª ¬ áᨢ }
for i:=1 to n do begin {®¤¡¨à ¥¬ ç¨á«® i-®¥ ¬¥áâ®}
g:=i; {‘ç¨â ¥¬, çâ® á ¬®¥ ¬ «¥ìª®¥ ç¨á«®,
ª®â®à®¥ ¬ ¢áâà¥â¨«®áì, á⮨⠬¥á⥠i}
for j:=i+1 to n do {¥à¥¡¨à ¥¬ ¢á¥ ç¨á« á i+1 ¤® ª®æ ¬ áᨢ }
if a[j]<a[g] then g:=j; {…᫨ 諨 ç¨á«®, ª®â®à®¥ ¬¥ìè¥,
祬 â®, ç⮠㦥 ©¤¥®, § ¯®¬¨ ¥¬ ¥£®}
{Œ¥ï¥¬ ¬¥áâ ¬¨ ç¨á« , áâ®ï騥 i-®¬ ¨
g-®¬ ¬¥áâ å }
{…᫨ a[i]=x, a[g]=y, â® ¯®á«¥ ¢ë¯®«¥¨ï
ª®¬ ¤ë: }
if i<>g then begin
a[i]:=a[i]+a[g]; {a[i]=x+y, a[g]=y}
a[g]:=a[i]-a[g]; {a[i]=x+y, a[g]=(x+y)-y=x}
a[i]:=a[i]-a[g]; {a[i]=(x+y)-x=y}
{’® ¥áâì ¯®á«¥ í⮣® a[i]=y, a[g]=x
®¡¬¥ § 票© ¯à®¨§®è¥«}
end;
end;
{‚뢮¤¨¬ १ã«ìâ â}
for i:=1 to n do
write(f2,a[i],' ');
close(f1);
close(f2);
end.
Нэмсэн: | Bataa |
Огноо: | 2010-01-26 |
Хугацааны хязгаарлалт: | 1s |
Эх кодын хэмжээний хязгаарлалт: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Програмчлалын хэлүүд: | ADA95 ASM32 ASM64 BASH BF C CSHARP C++ 4.3.2 CPP CPP14 C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON RUBY SCALA SCM guile SCM qobi ST TCL TEXT WHITESPACE |
hide comments
2014-01-05 09:48:03 mubis
//Орос тайлбарыг засав const nmax=100; var a:array[1..nmax] of integer; n:integer; i,j,g:integer; f1,f2:text; begin assign(f1,'input.txt'); reset(f1); assign(f2,'output.txt'); rewrite(f2); {Чтение входных данных} read(f1,n); for i:=1 to n do read(f1,a[i]); {Сортировка массива} for i:=1 to n do begin {Подбираем число на i-ое место} g:=i; {Считаем, что самое маленькое число, которое нам встретилось, стоит на месте i} for j:=i+1 to n do {Перебираем все числа с i+1 до конца массива} if a[j]<a[g] then g:=j; {Если нашли число, которое меньше, чем то, что уже найдено, запоминаем его} {Меняем местами числа, стоящие на i-ом и на g-ом местах } {Если a[i]=x, a[g]=y, то после выполнения команды: } if i<>g then begin a[i]:=a[i]+a[g]; {a[i]=x+y, a[g]=y} a[g]:=a[i]-a[g]; {a[i]=x+y, a[g]=(x+y)-y=x} a[i]:=a[i]-a[g]; {a[i]=(x+y)-x=y} {То есть после этого a[i]=y, a[g]=x обмен значений произошел} end; end {Выводим результат} for i:=1 to n do write(f2,a[i],' '); close(f1); close(f2); end. Last edit: 2014-01-05 09:49:00 |