fork download
  1. program password;
  2. const MAXN = 10000000;
  3. type elenco = array[1..MAXN] of qword;
  4. var N,K,i,h, C, x, ricordaindice, inizioricordaid, finericordaid, countrad : qword;
  5. numeri, freq, divisori :elenco;
  6. procedure scambia (var x,y: qword);
  7. var t:qword;
  8. begin
  9. t:=x;
  10. x:=y;
  11. y:=t;
  12. end;
  13. Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
  14. var inf, sup, medio:qword;
  15. pivot :qword;
  16. begin
  17. inf:=estremoi;
  18. sup:=estremos;
  19. medio:= (estremoi+estremos) div 2;
  20. pivot:=v[medio];
  21. repeat
  22. if (ordinato) then
  23. begin
  24. while (v[inf]<pivot) do inf:=inf+1;
  25. while (v[sup]>pivot) do sup:=sup-1;
  26. end;
  27. if inf<=sup then
  28. begin
  29. scambia(v[inf],v[sup]);
  30. inf:=inf+1;
  31. sup:=sup-1;
  32. end;
  33. until inf>sup;
  34. if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
  35. if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
  36. end;
  37.  
  38. begin
  39. readln(N,K);
  40. for i:=1 to N do read (numeri[i]); readln;
  41. for i:= 1 to N do begin divisori[i]:=0;freq[i]:=0; end; C:=0; h:=1; inizioricordaid:=0; finericordaid:=0; countrad:=0;
  42. ordinamento (1,N,numeri, true);
  43. for i:=1 to N do if K mod numeri[i]= 0 then begin divisori[h]:=numeri[i]; h:=h+1; end;
  44. for i:=1 to h-1 do write(divisori[i],' '); writeln;
  45. i:=1; while divisori[i]<trunc(sqrt(K)) do i:=i+1; inizioricordaid:=i;
  46. i:=inizioricordaid; while divisori[i]=(sqrt(K)) do begin countrad:=countrad+1; i:=i+1; end;
  47. if countrad=1 then C:=1
  48. else if countrad>1 then C:=(countrad*(countrad-1)) div 2;
  49. finericordaid:=i;
  50. writeln('ricid ',inizioricordaid,' ', finericordaid);
  51. for i:=1 to inizioricordaid -1 do freq[divisori[i]]:=freq[divisori[i]]+1;
  52. for i:=1 to inizioricordaid -1 do write(freq[divisori[i]],' ');writeln;
  53.  
  54.  
  55. writeln(C);
  56. end.
  57.  
Success #stdin #stdout 0.01s 5324KB
stdin
6 9
1 6 3 2 3 3
stdout
1 3 3 3 
ricid 2 5
1 
3