Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

tìm số thứ n của 1 dãy số có quy tắc:

  1. 1 số chia hết cho 1
  2. 2 số chia hết cho 2
  3. 3 số chia hết cho 3
  4. ...

1,2,4,6,9,12,16,20,24,28,30,35,40,45,50...

 

 


Code thường:

program hao;   
     uses
     crt;    
     var
     n, i, t, k, s, kq: Integer;    
     begin
         // input
         Write('Nhap N: ');
         readln(n);
         // xuli
         k := 1;
         s := 1;
         t := 1;
         while n > k do
         begin
             n := n - k;
             inc(k);
             i := 0;
             while s <= t do
             begin
                 inc(i);
                 s := i * k;
             end;
             t := s + (k - 1) * k;
         end;
         kq := s + (n - 1) * k;
         writeln('KQ: ', kq);
         readln;
     end.

Code dùng công thức:

uses crt;
var n:longint;
b:int64;

function tron(x:real):int64;
begin
    if x>=0 then exit(trunc(x));
        if x=trunc(x) then exit(trunc(x));
        exit(trunc(x)-1);
end;

begin
    readln(n);
    b:=-tron((1-sqrt(1+8*n))/2);
    writeln(b*(n- tron( b*(b+1) /6.0 )));
    readln;
end.