Trang 2 / 2 FirstFirst 12
Hiển thị kết quả từ 11 đến 17 / 17
  1. #11
    Tham gia
    28-09-2004
    Location
    Hà Nội
    Bài viết
    290
    Like
    0
    Thanked 1 Time in 1 Post
    chắc khoảng vài năm thôi

  2. #12
    Tham gia
    09-12-2005
    Bài viết
    125
    Like
    0
    Thanked 0 Times in 0 Posts
    Nếu ai đó mà ngồi viết chương trình tính một tỷ giai thừa thì...(^_^), ở đây tui chỉ muốn hỏi cách giải quyết vấn đề mà thui.

  3. #13
    Tham gia
    27-11-2009
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    the cho em cong thuc sterling la the nao

  4. #14
    Tham gia
    06-02-2009
    Bài viết
    9
    Like
    1
    Thanked 1 Time in 1 Post

    Thông tin

    Nếu muốn tính giai thừa với thời gian nhanh bạn dùng phương pháp Quy hoạch động. Chỉ biết phương pháp như thế thui, search google thử coi. Good luck!

  5. #15
    Tham gia
    08-12-2008
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn sử dụng cấu trúc String để giải quyết các bài toán tính toán với các số lớn nhé.

  6. #16
    Tham gia
    29-05-2004
    Location
    Hue
    Bài viết
    149
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn có thể sử dụng danh sách liên kết để xử lý bài này, hồi tôi đi học có làm bài tính 2 mũ n với n nguyên, theo lý thuyết thì nó chỉ phụ thuộc kích thước bộ nhớ và độ lớn số mũ n, trong bài chọn n là real cho nó lớn nhưng vẫn xử lý là số nguyên.
    Nay gởi các Bạn tham khảo, chúc thành công.

    Program Tinh2mu;
    uses crt;
    type kc=-1..9;
    pn=^no;
    no=record
    va:kc;
    next:pn
    end;
    Var fn,ln,he:pn;
    i,mul,add,di:word;
    n:real;
    procedure init(var head:pn);
    begin
    new(head);head^.va:=-1;
    head^.next:=head;
    end;
    procedure insertnode(var p:pn;
    val:kc);
    var z:pn;
    begin
    new(z);z^.va:=val;
    z^.next:=p^.next;
    p^.next:=z;p:=z;
    end;
    procedure writeval(he:pn);
    var p,q:pn;
    begin
    p:=he;q:=he;
    while p^.next<>he do
    p:=p^.next;
    write(p^.va);he:=p;
    while he^.va<>-1 do
    begin
    while p^.next<>he do
    p:=p^.next;
    he:=p;
    if he^.va=-1 then exit;
    write(he^.va);
    end
    end;
    BEGIN
    init(he);ln:=he;fn:=he;
    insertnode(ln,2);
    write(' So mu (lon hon hoac = 0) = ');readln(n);
    if n=0 then begin write('2^0 = 1');halt; end;
    if n<0 then begin write('so mu <0 khong tinh');halt; end;
    for i:=1 to trunc(n-1) do
    begin
    di:=0;add:=0;
    while ln<>he do
    begin
    mul:=ln^.va*2+di;
    di:=mul div 10;
    ln^.va:=mul mod 10;
    fn:=ln;ln:=ln^.next;
    end;
    if di<>0 then
    insertnode(fn,di);
    ln:=he^.next;fn:=he;
    end;
    writeval(he);
    readln
    END.

  7. #17
    Tham gia
    02-10-2007
    Bài viết
    216
    Like
    10
    Thanked 6 Times in 4 Posts
    Mình chỉ có kinh nghiệm vấn đề này là khi xử lý số lớn các bạn đừng tính từng chữ số một mà tạo kiểu cấu trúc dữ liệu mà 1 chữ số kiểu mới gồm 9 chữ số bình thường. Vì vậy khi tính toán ta sẽ nhanh gấp tầm 9 lần
    Các bạn cũng nên lưu ý nên chặt nhị phân để tính, ví dụ tính a^21
    ta chỉ cần tính a^1 a^2 a^4 a^8 a^16
    a^21 = a^16 * a^4 * a^1
    Số lượng phép tính sẽ giảm rất nhiều

Trang 2 / 2 FirstFirst 12

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •