mọi người ơi. tôi có một bài toán sau mong được sự giúp đỡ của mọi người:
Cho số nguyên dương N (1<=N<=1000). Hãy tìm số nguyên dương nhỏ nhất có đúng N ước số. Kết
quả đảm bảo không vượt quá 10^18.
Một số n gọi là số phản nguyên tố nếu số ước số của nó là nhiều nhất trong n số tự nhiên đầu tiên.
Cho số K (K <= 2 tỷ). Hãy ghi ra số phản nguyên tố lớn nhất nhỏ hơn hoặc bằng K.
Dữ liệu vào trong file PNT.INP nội dung gồm:
- Dòng đầu tiên là số M (1 < M <= 100) - số các số cần tìm số phản nguyên tố l ớn nh ất c ủa nó;
- M dòng tiếp theo lần lượt là các số K1, K2, K3, ..., KM;
Dữ liệu ra trong file PNT.OUT gồm M dòng: dòng thứ i là số phản nguyên tố lớn nh ất nhỏ hơn ho ặc
bằng Ki.
Ví dụ:
PNT.INP
1
1000
PNT.OUT
840
Ý tưởng: tư tưởng giải bài này cũng giống như giải bài tìm dãy con tăng lớn nhất, dãy wavio...l ớn/nh ỏ
nhất. tại mỗi số sẽ kiểm tra xem số đó có bao nhiêu ước, so sánh so ước đó với max_uoc.... và nh ư
thế, như thế ....
Nhớ lưu ý là ví dụ chỉ cho 1 số nhưng đề yêu cầu có thể kiểm tra m<=100 số đó nhe. Let go
program phannto;
uses crt;
var fi,fo:text;
a:array[1..100] of integer;
n,m:integer;
procedure doc;
begin
readln(fi,m,n);
end;
function dem(var x:integer):integer;
var i,d:integer;
begin
d:=0;
for i:=2 to x-1 do
if x mod i =0 then d:=d+1;
dem:=d;
end;
procedure xuli;
var i,max,vt:integer;
begin
vt:=2;
max:=dem(a[2]);
for i:=3 to n do
if max- Xem thêm -