Tin học Đếm số giai thừa

Chu Minh Hiền

Học sinh tiến bộ
Thành viên
3 Tháng ba 2017
704
312
229
19
~Thế Giới Phép Thuật ~
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Một ngày nọ, tại lớp học đội tuyển, Natodel và các học sinh khác đang làm bài tập thì bỗng dưng mất điện. Đây là trường hợp vô cùng bất ngờ đối với mọi người trong lớp đội tuyển tin. Để các học sinh của mình không có thời gian để "chém gió", Ktun đã nghĩ ra một bài tập để các học sinh của mình phải giải ra được, bài tập đó có nội dung như sau:
"Cho một số nguyên dương N, bài toán đặt ra là phải tìm tất cả các số X thoả mãn X! có số chữ số bằng N."
Ban đầu Ktun chỉ cho giới hạn rất nhỏ để thử các học sinh của mình, thế nên rất nhanh chóng Natodel và các bạn đã giải bài tập này bằng cách bấm máy tính cầm tay. Nhưng rồi oái oăm hơn, Ktun nhất quyết không cho học sinh chơi nên đã tăng giới hạn của N lên rất cao, điều đó làm cho cả lớp phải run sợ (do không có máy vi tính bên cạnh). Bạn đang sẵn máy tính, hãy giúp các Natodel giải bài tập này để họ có thời gian "chém gió" với nhau.
smiley-tongue-out.gif

Dữ liệu vào

Một dòng duy nhất chứa số nguyên dương N (N ≤ 2.10 6 )
Dữ liệu ra

Nếu không có số X nào thỏa mãn thì in ra "NO".
Nếu có số X thỏa mãn thì in ra nhiều dòng:
- Dòng thứ nhất chứa số S là số lượng số X.
- S dòng tiếp theo chứa 1 số X ghi theo thứ tự tăng dần.
Ví dụ

Input:
5
Output:
1
8
upload_2019-2-12_18-15-8.png
Minh làm vậy nhưng vẫn sai mọi người giúp mk với tối mk phải nộp rồi
 

ka1412

Học sinh chăm học
Thành viên
24 Tháng mười một 2017
874
730
121
Hà Nội
CNN | Life
Bạn thử xem xem =)))
Mã:
uses crt;
var i,n,j,h:longint;
s:extended;
function dem(q:longint):longint;
begin
    h := 0;s:=0;
    for j:=2 to q do s:= s+(ln(j)/ln(10));
    h   := trunc(s);
    dem := h+1;
end;
begin
    clrscr;
    write('Nhap n:');readln(n);
    if n<=0 then write('NO');
    if n=1 then begin writeln('4'); for i:=0 to 3 do write(i);end;
    if n=2 then begin writeln('1');write('4');end;
    if n=3 then begin writeln('2');writeln('5');writeln('6');end;
    i := 7;
    if n>3 then
    begin
        while dem(i)<n do inc(i);
            if dem(i)=n then begin writeln('1');write(i);end;
    end;
    readln
end.
 
  • Like
Reactions: Chu Minh Hiền
Top Bottom