Samo zadanie jest banalne... ale gdy trzeba policzyć n po k dla n większych niż 50 wynik wychodzi poza zakresy liczb całkowitych w pascalu (moznaliczyć w extended ale tylko 20 cyfr jest prawidłowe).
pierwsza komórka w tablicy to 1, potem kolejno mnożę przez 2, 3, 4... aż do n z przenoszeniem do następnej komórki. (wiem wiem, można mnożyć od n-k+1 do n a potem będę chciał dzielić stopniowo przez 2, 3, 4 aż do k).
Dobra ale zajmijmysię na razie TYLKO SILNIĄ.
Mnożenie mogę robić od 1 do 2000 komórki, ale chcę zrobić małą procedurkę, która policzy ile komórek jest zajętych, ale chce żeby działała szybko (bo mogę zrobić że zmniejsza x z 2000 aż A[x] będzie <>0, ale to jest czasochłone [w znaczeniu że program bedzie długo liczył]). Najlepiej byłoby tą procedurkę połączyć z przenoszeniem, ale moje dotychczasowe pomysły były poprawne tylko dla kilku pierwszych silni.
Czy macie jakieś pomysły jak to szybciej, wydajniej, efektywniej zrobić?
Pomysły odnośnie N po K też mile widziane :)
A[1]:=1;
x:=1;
for i:= 1 to n do
begin
for j:= 1 to x do A[j]:=A[j]*i;
x:=0;
REPEAT
inc(x);
IF A[x]>9 THEN
begin
A[x+1]:=A[x+1]+(A[x] div 10);
A[x]:=A[x] mod 10;
end;
UNTIL ????????;
end;
No właśnie UNTIL co? Macie jakieś pomysły?