kết quả từ 1 tới 11 trên 11

Cho N<2000 tính tổng các chữ số của N

  1. #1
    Ðến Từ
    Nam Định
    Thành Viên Thứ: 368445
    Giới tính: Nam
    Bài gửi
    19
    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    Đà Nẵng
    Thành Viên Thứ: 361750
    Giới tính: Nam
    Bài gửi
    2.197

    Reply: Cho N<2000 tính tổng các chữ số của N

    ngôn ngữ gì bạn
    "Above the best
    improve yourself
    your spirit never die..."


  3. #3
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 177479
    Giới tính: Nam
    Bài gửi
    5.683

    Reply: Cho N<2000 tính tổng các chữ số của N

    Trích Nguyên văn bởi snowolf901 Xem bài viết
    ngôn ngữ gì bạn
    Box pascal mà bác
    Hãy Support theo cách của bạn
    Hãy thank theo cách của tôi



  4. #4
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 279442
    Bài gửi
    5

    Reply: Cho N<2000 tính tổng các chữ số của N

    Mình thấy có gì đó sai sai ở đoạn N = 1700! sao lại bằng 24.
    Đây là đáp án của mình với N = 2000! tổng các số = 23382.

  5. #5
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Cho N<2000 tính tổng các chữ số của N

    Đoạn code lúc trước mình viết cho bạn chạy ra 23382 với N = 2000 và 20169 với N = 1750 mà.
    LCD: 13.3" 1920x1080 IPS
    CPU: Intel i7 - 4700MQ (2.4 GHz - 3.4 GHz)
    GPU: Nvidia GTX 765m with GDDR5 2GB
    RAM: 2x8GB G.Skill 2133
    HDD: Samsung SSD 850 Pro 512 GB
    2 kg.

  6. #6
    Ðến Từ
    Nam Định
    Thành Viên Thứ: 368445
    Giới tính: Nam
    Bài gửi
    19

    Reply: Cho N<2000 tính tổng các chữ số của N

    Trích Nguyên văn bởi max908 Xem bài viết
    Mình thấy có gì đó sai sai ở đoạn N = 1700! sao lại bằng 24.
    Đây là đáp án của mình với N = 2000! tổng các số = 23382.
    tớ không rõ nữa nhưng test nhỏ mình đúng hết. với lại người ta cm rồi N! càng lớn thì càng nhiều số 0 bạn à

  7. #7
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Cho N<2000 tính tổng các chữ số của N

    Trích Nguyên văn bởi hoangtungok123 Xem bài viết
    tớ không rõ nữa nhưng test nhỏ mình đúng hết. với lại người ta cm rồi N! càng lớn thì càng nhiều số 0 bạn à
    Còn có phần không bằng 0 nữa; phần này mới là càng ngày càng nhiều chữ số khác 0. Bởi vậy kết quả là tăng dần.
    Bạn xem lại có bị overflow biến không, có thể post code để xem thế nào.

  8. #8
    Ðến Từ
    Nam Định
    Thành Viên Thứ: 368445
    Giới tính: Nam
    Bài gửi
    19

    Reply: Cho N<2000 tính tổng các chữ số của N

    Trích Nguyên văn bởi tengiday Xem bài viết
    Còn có phần không bằng 0 nữa; phần này mới là càng ngày càng nhiều chữ số khác 0. Bởi vậy kết quả là tăng dần.
    Bạn xem lại có bị overflow biến không, có thể post code để xem thế nào.
    Mã:
    Const Fi = 'GIAITHUA.INP';
            Fo = 'GIAITHUA.OUT';
      Var   F1 , F2 : Text;
            N ,i, s,x: Word;
            gt : extended;
            s1 : ansistring;
      Begin
    Assign(F1,Fi);
    Reset(F1);
    Assign(F2,Fo);
    Rewrite(F2);
         While not eof(F1) do
         Begin
              REadln(F1,N);
              gt:=1;
              for i:=1 to n do gt:=gt*i;
              str(gt:3:0,s1);
              s:=0;
              for i:=1 to length(s1) do
              Begin
                   val(s1[i],x);
                   s:=s+x;
              end;
              writeln(f2,s);
         end;
    close(F2);
      End.
                                     {  programmed by Hieu }
    code của mình hình như sai ở chỗ xâu s1:ansistring hình như không đủ cho 1700! nên nó tính khoảng kí tự của ansistring
    mong các bạn giúp đỡ

  9. #9
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Cho N<2000 tính tổng các chữ số của N

    Lỗi ở chỗ bạn dùng 'extended' để lưu kết quả. Biến loại extended mặc dù có range thỏa mãn yêu cầu, nhưng mà nó chỉ có 19-20 chữ số có nghĩa thôi (tức có nghĩa rằng những chữ số sau đó sẽ đc làm tròn hoặc do sai số trong máy). Bởi vậy kết quả không còn chính xác nữa. Bạn có thể thử tính 22! sẽ thấy máy bắt đầu làm tròn.
    Mã:
    22! = 1124000727777607680000 (correct answer)
    22! = 1124000727777607700000 (your 'gt')
    23! = 25852016738884976640000 (correct answer)
    23! = 25852016738884977000000 (your 'gt')
    24! = 620448401733239439360000 (correct answer)
    24! = 620448401733239440000000 (your 'gt')
    25! = 15511210043330985984000000 (correct answer)
    25! = 15511210043330986000000000 (your 'gt')
    Nhìn vào kết quả trên, bạn thấy rất rõ ràng, extended ko bao giờ ghi nhận đúng những chữ số sau 19-20 cả. Khi làm việc với kiểu số thập phân, bạn phải hết sức cẩn thận; cho dù bất kỳ ngôn ngữ nào (C, Java, Pascal, MATLAB,...) những loại biến này đều có sai số và chữ số có nghĩa cả.
    Bạn nên biểu diễn bằng kiểu array lúc trc mình viết.

  10. #10
    Ðến Từ
    Nam Định
    Thành Viên Thứ: 368445
    Giới tính: Nam
    Bài gửi
    19

    Reply: Cho N<2000 tính tổng các chữ số của N

    Trích Nguyên văn bởi tengiday Xem bài viết
    Lỗi ở chỗ bạn dùng 'extended' để lưu kết quả. Biến loại extended mặc dù có range thỏa mãn yêu cầu, nhưng mà nó chỉ có 19-20 chữ số có nghĩa thôi (tức có nghĩa rằng những chữ số sau đó sẽ đc làm tròn hoặc do sai số trong máy). Bởi vậy kết quả không còn chính xác nữa. Bạn có thể thử tính 22! sẽ thấy máy bắt đầu làm tròn.
    Mã:
    22! = 1124000727777607680000 (correct answer)
    22! = 1124000727777607700000 (your 'gt')
    23! = 25852016738884976640000 (correct answer)
    23! = 25852016738884977000000 (your 'gt')
    24! = 620448401733239439360000 (correct answer)
    24! = 620448401733239440000000 (your 'gt')
    25! = 15511210043330985984000000 (correct answer)
    25! = 15511210043330986000000000 (your 'gt')
    Nhìn vào kết quả trên, bạn thấy rất rõ ràng, extended ko bao giờ ghi nhận đúng những chữ số sau 19-20 cả. Khi làm việc với kiểu số thập phân, bạn phải hết sức cẩn thận; cho dù bất kỳ ngôn ngữ nào (C, Java, Pascal, MATLAB,...) những loại biến này đều có sai số và chữ số có nghĩa cả.
    Bạn nên biểu diễn bằng kiểu array lúc trc mình viết.
    bạn gửi code cho mk xem thử đi nhé!!

  11. #11
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    881

    Reply: Cho N<2000 tính tổng các chữ số của N