Hiển thị kết quả từ 1 đến 7 / 7

Chủ đề: Em gà, giúp em cái

  1. #1
    Tham gia
    25-06-2011
    Location
    Ninh Bình
    Bài viết
    165
    Like
    4
    Thanked 57 Times in 52 Posts

    Em gà, giúp em cái

    Bài của e cực ngắn thôi, các anh chị giúp em cái:
    Tính căn bậc 2 của số có n chữ số (n<= 10^3)
    Quote Quote

  2. #2
    Tham gia
    22-10-2011
    Bài viết
    211
    Like
    2
    Thanked 30 Times in 19 Posts
    Hả? Yêu cầu cụ thể thế nào?
    Nếu không có yêu cầu cụ thể, thì quất cái hàm SQRT là xong mà.

    sqrt(x)=căn bậc 2 của x

  3. Thành viên Like bài viết này:


  4. #3
    Tham gia
    25-06-2011
    Location
    Ninh Bình
    Bài viết
    165
    Like
    4
    Thanked 57 Times in 52 Posts
    n có 10^3 chữ số cơ mà, sprt= niềm tin ah?

  5. #4
    Tham gia
    22-10-2011
    Bài viết
    211
    Like
    2
    Thanked 30 Times in 19 Posts
    Chết cha, đọc ẩu, tưởng là tính căn bậc 2 của n. Có nhiều phương pháp tính căn bậc 2 của một số:
    PP 1:
    Có thuật toán gọi là thuật toán Newton-Raphson dùng công thức truy hồi Để tính √a ta lấy x1 tùy ý (thường là lấy x1 gần giá trị căn để tính nhanh), có x_(n+1) = (x_n + a / x_n) / 2

    n càng lớn thì độ chính xác càng lớn. Nếu ta muốn có độ chính xác là e thì ta tính cho tới khi |x_n - x_(n - 1)| < e
    PP 2:
    Phân tích thành thừa số nguyên tố, rút gob5 ( giống như bài lý thuyết tính căn)

    Cả hai phương pháp đều phải xây dựng hệ thống hàm tính toán (+,-,x, với số lớn trước.

    Code bài này chắc cả ngày luôn quá, Mình có ý tường là mỗi người viết 1 khúc

    - Hàm tính toán
    Cong_so_lon(S1,S2: String):String;
    Tru_so_lon(S1,S2: String):String;
    Nhan_so_lon(S1,S2: String):String;
    Chia_so_lon(S1,S2: String):String;
    - Hàm tính căn bậc hai số lớn ( Theo phương pháp Newton)

  6. Thành viên Like bài viết này:


  7. #5
    Tham gia
    22-10-2011
    Bài viết
    211
    Like
    2
    Thanked 30 Times in 19 Posts
    Oài, chưa ai viết gì à.
    Hàm thứ nhất tính tổng hai số lớn (<255 chữ số)
    Code:
    Function Cong_Hai_So_Lon(S1,s2:String):String;
    Var
      i,n: Integer;
      s3:String;
      x1,x2,x3,nho:integer;
    Begin
      Nho:=false;
      If length(s1)>length(s2) then n:=length(s1)
       Else n:=length(s2); {Kiểm tra số dài hơn}
      For i:=n downto 1 do 
       Begin
         Nho:=0;
         x1:=ord(s1[i])-48; {Đổi ký tự sang số}
         x2:=ord(s2[i])-48;
         x3:=x1+x2;          {Cộng lại}
         s3[i]:=chr(x3 mod 10 +48+nho); (Đổi sang ký tự đưa vào mảng)
         If x3>10 then nho:=1;   {xét nhớ}
       End;   {Tính tổng xong}
      If nho=1 then  {số cuối cùng có nhớ thì thêm 1 vào đầu mảng}
      Begin
       For i:= n+1 downto 2 do s3[i]:=s3[i-1];
       s[1]:=chr(nho+48);           
      End;
     Cong_Hai_So_Lon:=s3; {kết quả}
    End;
    Các bạn test dùm .
    Note: Nếu >255 thì chuyển hết String thành mảng và thêm đếm phần tử mảng. để làm số chữ số. ( lỡ làm String rồi, làm biếng gõ lại.)
    Được sửa bởi Em Chán Gà lúc 04:07 ngày 21-11-2011

  8. #6
    Tham gia
    25-06-2011
    Location
    Ninh Bình
    Bài viết
    165
    Like
    4
    Thanked 57 Times in 52 Posts
    Bạn(anh) nói rõ ý tưởng được ko?? Chứ số lớn thì đối với mình(em) thì ok luôn, chỉ cần ý tưởng là code xong thôi

  9. #7
    Tham gia
    22-10-2011
    Bài viết
    211
    Like
    2
    Thanked 30 Times in 19 Posts
    Ý tưởng là thế này:

    VD: tính A=(căn 17)
    Bạn phân tích 17=16+1.
    A=căn(16+1)=4*căn(1+1/16)
    Bạn tính xấp xỉ của căn(1+1/16)~1+1/(2*16)
    Vậy căn(16+1)=4*căn(1+1/16)~4*(1+1/(2*16))=4*(1+1/32)=33/8.

    Chắc chắn khi học đạo hàm bạn cũng sẽ được học phương pháp giải gần đúng pt f(x) = 0. Nếu tôi nhớ không lầm thì bạn được học 2 pp: pp tiếp tuyến và pp dây cung.
    Để tính √a ta đặt x = √a <=> x^2 - a = 0. Ta xét hàm f(x) = x^2 - a, ta phải tìm nghiệm của f(x) = x^2 - a = 0
    f'(x) = 2x
    Sử dụng pp tiếp tuyến ta có các xấp xỉ liên tiếp được tính theo công thức truy hồi
    x_(n + 1) = x_n - f(x_n) / f'(x_n)

    => x_(n + 1) = x_n - [(x_n)^2 - a] / (2*x_n) = (x_n + a / x_n) / 2

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
  •