pascal求解問題描述由檔案給出n個1到30000間無

時間 2022-04-27 01:51:45

1樓:

我覺得這個資料範圍完全不用什麼快排,大材小用,30000內的數直接計數排序就可以了(你的程式就是計數排序).

你這麼做我覺得是完全正確的,我也寫了個資料生成器來試了試,你的程式時間複雜度完全過關,正確性應該沒有問題.

空間不應該有問題,你的空間複雜度十分低,低到了基本可以忽略的地步,不可能mle的

2樓:匿名使用者

學過快排嗎?這題很簡單,用快排排一遍,在從頭到尾比較一遍。**我不打了,

如果你還有不明白的再問,如果明白了就採個最佳吧

你的**空間超了。

3樓:匿名使用者

望採納var

a,b:array[1..30000]of longint;

s,n,m,k,i:longint;

procedure qs(x,y:longint);//快排;

var i,j,q,t:longint;

begin

i:=x;j:=y;

q:=(i+j)shr 1;

repeat

while (b[i]>b[q])do

inc(i);

while (b[j]=j;

if ia[q])do

dec(j);

if i<=j then

begin

t:=a[i];a[i]:=a[j];a[j]:=t;

inc(i);dec(j);

end;

until i>=j;

if im then

m:=s;//記錄最大值;

a[s]:=s;

inc(b[s]);

end;

readln;

qs(k,m);

m:=k;

while b[m]=b[k]do

inc(m);

dec(m);

qs1(k,m);

for i:=k to m do

writeln(a[i],' ',b[i]);

end.

眾數,pascal糾錯

4樓:匿名使用者

varn:integer;

a:array[1..30000] of integer;

f:text;

i,k,max:integer;

begin

for i:=1 to 30000 do a[i]:=0;

assign(f,'眾數.in'); reset(f);

readln(f,n);

for i:=1 to n do begin read(f,k); inc(a[k]); end;

close(f);

max:=0;

for i:=1 to 30000 do if a[i]>max then max:=a[i];

for i:=1 to 30000 do if a[i]=max then writeln(i:5,a[i]:5);

end.

pascal語言 給出乙個整數a和乙個正整數n,求乘方a的n次方

5樓:飝快de時間

uses math;

vara,n:longint;

begin

readln(a,n);

writeln(power(a,n));

end.

求下面問題的pascal程式,第二題要用氣泡排序

6樓:匿名使用者

第一題var n,i,j,k,a,b,s:longint;

begin

s:=0;

readln(a,b);

for i:=a to b do beginn:=sqrt(i);

j:=i;

k:=0;

while j<>0 do begin

inc(k,j mod 10);

j:=j div 10;

end;

k:=sqrt(k);

while n<>0 do begin

dec(k,n mod 10);

n:=n div 10;

end;

if k=0 then inc(s);

end;

writeln(s);

end.

第二題var n,k,i,j,t:longint;

a:array[1..10000] of longint;

begin

readln(n,k);

for i:=1 to n do read(a[i]);

for i:=1 to n-1 do

for j:=i+1 to n do if a[i]>a[j] then begin

t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;

writeln(a[k]);

end.

誰能給我解釋一下,這個pascal程式是什麼意思?為什麼要這樣解決這個問題?請詳細地解釋一下。謝謝!!!

7樓:聽不清啊

這是不我改的嗎?

var a:array[1..10000] of longint;

i,j,n,k,t,h:longint;

begin read(n,k);

for h:=1 to n do read(a[h]);

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then begint:=a[j];

a[j]:=a[i];

a[i]:=t;

end;

i:=1; j:=1;

while (ja[i-1] then inc(j);

end;

if (i=n)and(j

end.

8樓:匿名使用者

這個程式讀入資料後進行排序,然後就能找出第k小整數

pascal:1.任意給定乙個正整數n,求乙個最小的正整數m,使得n*m的十進位制表示形式裡只含1和0。 要程式!快 30

9樓:匿名使用者

純模擬就行了,2013julyxx打的程式應該是對的,不過你的n範圍是多少,還有一種情況就是——不論m為多少,都無法滿足要求,請問這時輸出什麼?

10樓:匿名使用者

水題var n,i:longint;

function f(x:qword):boolean;

begin

while x>0 do

begin

if x mod 10>1 then exit(false);

x:=x div 10;

end;

end;

begin

read(n);

for i:=1 to 1000000 doif f(n*i) then

begin

writeln(i);

halt;

end;

end.

pascal題 裝箱問題求解法,PASCAL題 裝箱問題求解法

這裡不但有這一題的詳細解答,還有其他相似題目,可供參考。附程式 program ll vars,i,j,n,min,v longint a array 0.10000 of longint procedure run k,va longint begin if va min then min va ...

一道pascal問題求解,一道Pascal問題求解

用hash壓縮下,時空效率就很高了。先放在陣列,再用for迴圈,迴圈是 a to z 然後再用選擇排序 for i 1 to n 1 do for j i 1 to n do begin t a i a i a j a j t end 一道pascal問題求解 按題意,分子中能分解出sum1個2,分...

pascal題目求解

首先第一行為你的錢數,第二行表示有n個遊戲,並且有n個時間段,第三行表示每個遊戲必須在某個時間段前完成,最後一行即沒有完成相應遊戲的扣錢數。顯然輸入資料為7個時間段。在第乙個時間段玩第1個遊戲,第二個玩第2個遊戲,第三段玩第4個遊戲,第四段玩第3個遊戲,第五段玩第7個遊戲。這樣沒有玩第5 6個遊戲,...

pascal語言小問題,關於Pascal語言問題 完整的

像writeln sqrta 8 2 中的 8 2,稱之為 雙場寬 我們知道實型 real型,小數 數值在pascal中表現為科學計數法。比如 123.456,表現為 1.2345600000e 02。為了跟我們的日常使用習慣接近,我們用雙場寬控制實型數值的輸出形式。第乙個冒號後面的數表示總場寬,包...

pascal質數問題

這是dp吧。注意 這是乙個完全揹包問題。程式是網上找的,今天太遲了,已經23 00了,看看這個程式,應該符合要求,如果有疑問,明天可以追問我。var n,i,j,k,p,la longint f array 0.200 of longint a array 1.100 of longint bo a...