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 số chia hết cho 1
- 2 số chia hết cho 2
- 3 số chia hết cho 3
- ...
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.