На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Ось мої рішення задач,
але їх зовсім) не прийняла система
а я невзмозі знайти ,що саме не так
допоможіть знайти помилки.
Program Сalculation;
var a2,x2,a3,a4,a5,a6,a7,a8,a9,a,b,l2,v,i,v2,v3,v4,v5,v6,v7,v8,v9,x3,x4,x5,x6,x7,x8,x9,l3,l4,l5,l6,l7,l8,l9:integer;
begin
read(a,b);
a2:=a;a3:=a;a4:=a;a5:=a;a6:=a;a7:=a;a8:=a;a9:=a;
v2:=1;x2:=0;
while a2>0 do begin
l2:=a2 mod 2; a2:=a2 div 2;x2:=x2+l2*v2; v2:=v2*10; end;
v3:=1;x3:=0;
while a3>0 do begin
l3:=a3 mod 3; a3:=a3 div 3;x3:=x3+l3*v3; v3:=v3*10; end;
v4:=1;x4:=0;
while a4>0 do begin
l4:=a4 mod 4; a4:=a4 div 4;x4:=x4+l4*v4; v4:=v4*10; end;
v5:=1;x5:=0;
while a5>0 do begin
l5:=a5 mod 5; a5:=a5 div 5;x5:=x5+l5*v5; v5:=v5*10; end;
v6:=1;x6:=0;
while a6>0 do begin
l6:=a6 mod 6; a6:=a6 div 6;x6:=x6+l6*v6; v6:=v6*10; end;
v7:=1;x7:=0;
while a7>0 do begin
l7:=a7 mod 7; a7:=a7 div 7;x7:=x7+l7*v7; v7:=v7*10; end;
v8:=1;x8:=0;
while a8>0 do begin
l8:=a8 mod 8; a8:=a8 div 8;x8:=x8+l8*v8; v8:=v8*10; end;
v9:=1;x9:=0;
while a9>0 do begin
l9:=a9 mod 9; a9:=a9 div 9;x9:=x9+l9*v9; v9:=v9*10; end;
if b=x2 then write(2);
if b=x3 then write(3);
if b=x4 then write(4);
if b=x5 then write(5);
if b=x6 then write(6);
if b=x7 then write(7);
if b=x8 then write(8);
if b=x9 then write(9);
end.
Program Figurå;
var N,z,j,k,i:integer; m,l:array[1..1000000] of integer;
begin
read(N);
for i:=1 to N do
read(m[i],l[i]);
z:=0; k:=1;
for i:=1 to N do
begin
for j:=i+1 to N do begin
if (m[i]=m[j]) and (l[i]=l[j]) then k:=k+1; end;
if k>z then begin z:=k;end; k:=1;
end;
writeln(z);
end.
Поза форумом
А так не пробовали:
Program Figure;
var N,z,j,k,i:integer; m,l:array[1..10000] of integer;
..........................................
Зачем Вам миллионные массивы?
Козда можно создать двумерный массив (типа long int) по количеству клеток на шахматной доске 8 х 8 (или даже одномерный можно на 64 элемента), обнулить его и добавлять в цикле по единичке в каждую ячейку с индексами, соответствующими считанной паре координат.
Потом только останется найти максимальный элемент такого массива.
Відредаговано LVV (2011-11-23 04:59:10)
Поза форумом
Спробую відповісти сАме на питання "що не так конкретно тут", а не на питання "як можна іще".
Конкретно з програмою Program Figurå;
Я не знаю, яка буква була в імені з самого початку, але букви "å" там точно не треба.
ЯКЩО з кодом задачі (який виставляється автоматично згідно імені програми, але потім можна змінити) все гаразд, то результати перевірки такі:
00 PASSED (+0) 0.01 сек.
01 PASSED (+1) 0.01 сек.
02 PASSED (+1) 0.01 сек.
03 PASSED (+1) 0.01 сек.
04 PASSED (+1) 0.01 сек.
05 PASSED (+1) 0.01 сек.
06 PASSED (+1) 0.01 сек.
07 PASSED (+1) 0.01 сек.
08 PASSED (+1) 0.01 сек.
09 PASSED (+1) 0.01 сек.
10 PASSED (+1) 0.01 сек.
11 PASSED (+1) 0.01 сек.
12 FAILED (Time Out) 0.06 сек.
13 FAILED (Bad Data) 0.08 сек.
14 FAILED (Bad Data) 0.16 сек.
15 FAILED (Bad Data) 0.28 сек.
16 FAILED (Bad Data) 3.04 сек.
17 PASSED (+1) 0.43 сек.
18 FAILED (Bad Data) 0.14 сек.
19 FAILED (Bad Data) 0.24 сек.
20 FAILED (Bad Data) 3.03 сек.
Конкретно Bad Data спричинено, найімовірніше, тим, що тип integer у Free Pascal 16-бітовий, тобто до 32767, і використання його для індексів масивів більших розмірів призводить до різноманітних наслідків. Щоправда, конкретно тут виправлення integer на longint не дає жодного нового пройденого тесту, лише Bad Data міняються на Time Out (програма працювала занадто довго й була зупинена примусово). Тут треба просто робити принципово інший алгоритм. Наприклад, такий, як описав (словами) LVV. А от смисл пропозиції LVV тупо скоротити розмір масива до 10000 абсолютно не зрозумілий: якщо неоптимальний алгоритм передбачає, що всі дані слід прочитати у масив, то в такій програмі розмір масиву таки повинен бути мільйонним.
Поза форумом
Ilya Porublyov написав:
А от смисл пропозиції LVV тупо скоротити розмір масива до 10000 абсолютно не зрозумілий: якщо неоптимальний алгоритм передбачає, що всі дані слід прочитати у масив, то в такій програмі розмір масиву таки повинен бути мільйонним.
Зміст моєї пропозиції був не в тому, щоб "тупо скоротити розмір масива до 10000", а в тому, щоб учень сам здогадався, чому при 1000000 не працює (а воно таки не працює) а при 10000 працює і зрозумів, що потрібен інший підхід, якщо не можна навіть визначити масив потрібного (за його алгоритмом) розміру.
Відредаговано LVV (2011-11-23 13:39:56)
Поза форумом
shadybaby написав:
допоможіть знайти помилки.
Program Сalculation;
Ну, по-перше, переповнення відбувається, коли перевірити на значеннях, наприклад 131072 та 100000000000000000,
а по-друге, я не впевнений, що перевіряюча система прийме перехід на новий рядок при виводі результату writeln(z) (краще write(z)), бо на C++, наприклад, зайвий перехід на новий рядок видає як технічну помилку.
Поза форумом
Дякую вам.
не підкажите, що треба зробити, щоб переповнення не відбувалося для 131072 та 100000000000000000
вибачте за такі питання,я початківець
хотілося б зрозуміти
Поза форумом
Доречі, здається у Ваших кодах помилка не лише в назві Figurå, а й в назві Сalculation;(перший символ), бо при збереженні коду в unicod замість символу "С" висвічується щось дивне.
А стосовно переповнення, нажаль я не орієнтуюсь у типах даних середовища TurboPascal (чи є там щось більше за цілочисленний тип longint) чи як там можна це обійти.... (думаю, тут знайдуться спеціалісти, які підкажуть, як бути).
А у С++ ця проблема вирішується використанням типу даних long long int.
Хоча е й інші методи зчитування й збереження дуже великих чисел, які неможливо зберегти в жодному типові змінних.
Відредаговано LVV (2011-11-24 11:20:01)
Поза форумом