Trang 2 của 3 Đầu tiênĐầu tiên 1 2 3 CuốiCuối
  1. #11
    downcome Đang Ngoại tuyến BPIT Member
    Ngày tham gia
    Tue Feb 2008
    Bài viết
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Mặc định

    Trích dẫn Gửi bởi thanhvt688 Xem bài viết
    khi nhập n vào ta kiểm tra coi nó chẵn hay là lẽ
    tiếp theo ta cho nó chạy vòng lặp
    biến i=0;i<=n;i++;
    trong vòng lặp ta lại xét i chẵn hay lẽ
    rồi cho i= 1 biến tạm nào đó
    ta sẽ có
    s+=biến tạm
    xuất s ra màn hình thôi
    i
    Có thể làm thế này
    - Khai báo biến tạm temp = 0
    - Nếu n lẻ thì temp = 1
    - Sum = 0
    - Vòng lặp i = 1 đến n
    Nếu i mod 2 = temp thì <-- Kiểm tra các số cần cộng vào kết quả là chẵn hay lẻ???
    Sum = Sum + i
    Xuất Sum ra màn hình (là kết quả)
    Lần sửa cuối bởi downcome, ngày 29-02-2008 lúc 12:16 PM.

  2. #12
    lion's Avatar
    lion Đang Ngoại tuyến Keep working
    Ngày tham gia
    Mon Dec 2006
    Đang ở
    binh phuoc
    Tuổi
    27
    Bài viết
    927
    Thanks
    165
    Thanked 443 Times in 176 Posts

    Mặc định

    quên công thức cộng công bội rồi nên yeuit làm cách này nhé.
    Bạn nào có công thức đó viết ra đây nhé
    yeuit có cách này
    ta có công thức


    1+2+3+4+5 +...+n = n(n+1)/2

    áp dụng cho bài của bạn
    Với n < 100
    Nếu n là số lẻ thì S = 1 + 3 + 5 +...+ n = [2+4+6+8+...+(n+1)] -[(n-1)/2+1]
    đem trừ từng phần tử cho 1
    Nếu n là số chẵn thì S = 2 + 4 + 6 +...+ n = 2(1+2+3+...+n/2)

    ta có 1+2+3+....+m = m(m+1)/2

    -> 1+3+5+...+n = 2([(n+1)/2]*[(n+1)/2+1])/2 - [(n-1)/2+1]
    = (n+1)(n+3)/4 - (n+1)/2
    2 + 4 + 6 +...+n = 2[n/2(n/2+1)]/2 = n(n+2)/4

    có gì sai sót bà con giải lại hộ nhé . lâu rồi già cả đầu óc lu bu quá

    Program tinhtong;
    Var n,sum: integer;
    Begin
    Write('Nhap vao so nguyen n: '); Readln(n);
    if n mod 2 =0 then
    sum = (n+1)(n+3)/4 - (n+1)/2 ;
    else
    sum = n(n+2)/4;
    Writeln('tong can tim la :',sum);
    Readln;
    End.


    thông cảm thông cảm sữa cho chạy nhé, yeuit chưa học pascal. Không biết cái viết có phải là pascal không
    Thân này vô thường, tâm này vô ngã

  3. #13
    lion's Avatar
    lion Đang Ngoại tuyến Keep working
    Ngày tham gia
    Mon Dec 2006
    Đang ở
    binh phuoc
    Tuổi
    27
    Bài viết
    927
    Thanks
    165
    Thanked 443 Times in 176 Posts

    Mặc định

    các bạn cũng có thể dùng cách sau

    Program tinhtong;
    Var n,i, sum: integer;
    Begin
    Write('Nhap vao so nguyen n: '); Readln(n);
    if n mod 2 = 1
    i = 1 ;
    else
    i = 2 ;
    while i<=n
    begin
    sum = sum + i;
    i = i+2 ;
    end
    Writeln('tong can tim la :',sum);
    Readln;
    End.
    Thân này vô thường, tâm này vô ngã

  4. #14
    lion's Avatar
    lion Đang Ngoại tuyến Keep working
    Ngày tham gia
    Mon Dec 2006
    Đang ở
    binh phuoc
    Tuổi
    27
    Bài viết
    927
    Thanks
    165
    Thanked 443 Times in 176 Posts

    Mặc định

    với hai cách trên
    cách 1 : dùng khi n quá lớn nếu dùng lặp sẽ tốn chi phí
    Cách 2 dùng khi n trung bình như bài này (n<100) có thể dùng cách này như vậy chi phí sẽ thấp.
    Thân này vô thường, tâm này vô ngã

  5. #15
    lion's Avatar
    lion Đang Ngoại tuyến Keep working
    Ngày tham gia
    Mon Dec 2006
    Đang ở
    binh phuoc
    Tuổi
    27
    Bài viết
    927
    Thanks
    165
    Thanked 443 Times in 176 Posts

    Mặc định

    các giải pháp của downcom và thanhvt rất tốt.
    Các bạn viết code ra nhé. Tuy nhiên các bạn đều làm
    cho lặp từ 1-> n (tốn chi phí n)
    mỗi lần kiểm tra tốn n chi phí

    Chi phí co phép cộng n/2

    -> chi phí n+n+n/2

    Nếu các bạn khéo léo mỗi lần lặp bạn tăng i lên 2 thì sẽ bỏ được n/2 lần lặp
    và n chi phí kiểm tra

    Với mỗi bài dù nhỏ, cũng có rất nhiều cách để viết giải thuật tuy nhiên các bạn không nên xem thường bài nhỏ mà làm sơ sài nhé !

    Thân !
    Thân này vô thường, tâm này vô ngã

  6. #16
    thanhvt688 Đang Ngoại tuyến BPIT Advanced Member
    Ngày tham gia
    Thu Dec 2007
    Bài viết
    187
    Thanks
    9
    Thanked 38 Times in 25 Posts

    Mặc định

    cái này là bài đầu tiên mình học lập trình hihihihihi
    ko biết từ bao giờ rồi
    chủ yếu là thuật toán thôi
    thuật toán càng ngắn ct càng chạy nhanh tốn ít tài nguyên thôi ^^
    Lần sửa cuối bởi thanhvt688, ngày 29-02-2008 lúc 03:03 PM.

  7. #17
    pbd255 Đang Ngoại tuyến Newbie
    Ngày tham gia
    Tue Mar 2009
    Tuổi
    17
    Bài viết
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Mặc định

    Trích dẫn Gửi bởi Ngân_Hí Xem bài viết
    anh nào giải bài này nhé! ^^! Bài này là bài thi học kỳ I vừa rồi!
    Tính tổng S và xuất ra màn hình!
    Với n < 100
    Nếu n là số lẻ thì S = 1 + 3 + 5 +...+ n
    Nếu n là số chẵn thì S = 2 + 4 + 6 +...+ n
    Đa số học sinh lớp 11 khi nhận được đề đều pó tay! không ai viết đc trong vòng 45 phút! Nên điểm cao nhất là 3 điểm cho mỗi bài! ^^!
    BÀI GIẢI:
    program bt;
    var s,i,n:integer;
    begin
    writeln('Nhap n');
    readln(n);
    s:=0;
    if n<100 then begin
    if odd(n) then if odd(i) then s:=s+i;
    if not odd(n) then if not odd(i) then s:=s+i;
    end;
    writeln('tong=',s);
    readln
    end.

  8. #18
    Ngày tham gia
    Tue May 2009
    Tuổi
    16
    Bài viết
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Mặc định

    anh nào giải bài này nhé! ^^! Bài này là bài thi học kỳ I vừa rồi!
    Tính tổng S và xuất ra màn hình!
    Với n < 100
    Nếu n là số lẻ thì S = 1 + 3 + 5 +...+ n
    Nếu n là số chẵn thì S = 2 + 4 + 6 +...+ n
    Đa số học sinh lớp 11 khi nhận được đề đều pó tay! không ai viết đc trong vòng 45 phút! Nên điểm cao nhất là 3 điểm cho mỗi bài! ^^!

    {Làm thử nha, if hơi nhìu, pài cũng hơi dài, thông cảm}

    program tong;
    var n,i:shortint;s:word;
    begin
    repeat
    write('Nhap vao n: ');readln(n);
    until n in [1..99];
    s:=0;
    if (n mod 2=0) then
    for i:=2 to n do
    if i mod 2 = 0 then s:=s+i;
    if (n mod 2<>0) then
    for i:=1 to n do
    if i mod 2 <>0 then s:=s+i;
    write('Tong la: ',s);
    readln;
    end.

  9. #19
    Ngày tham gia
    Tue May 2009
    Tuổi
    16
    Bài viết
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Mặc định

    pà kon kô pác làm thử baj nj` nhá!
    Đề bài: Số siêu nguyên tố là một số mà ban đầu nó là số nguyên tố, bỏ đi chữ số cuối cùng vẫn là số nguyên tố, đến khi chỉ còn 1 chữ số vẫn là số nguyên tố. (Hà hà, em giải thjk hơi khó hiu~); Viết chương trình nhập vào một số nguyên dương và xét xem số đó có phải là số siêu nguyên tố không? (gợi ý nhá: dùng hàm tiện hơn nhìu so với viết ra chương trình chính đấy!!!)

  10. #20
    tynz Đang Ngoại tuyến Newbie
    Ngày tham gia
    Tue Jan 2011
    Bài viết
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Mặc định

    a:= n mod 10;
    while ngto(a)= true do
    begin
    d:=d+1;
    n:=n div 10;
    a:=n mod 10;
    end;
    if (n div d<10) and (n div d >0) then writeln(' n la sieu ngto') else
    writeln(' ko fai');

    chỉ làm fần chính thôi
    Lần sửa cuối bởi tynz, ngày 04-01-2011 lúc 11:09 PM. Lý do: Bổ Sung


 

Thông tin về chủ đề này

Users Browsing this Thread

Có 1 người đang xem chủ đề. (0 thành viên và 1 khách)

     

Các Chủ đề tương tự

  1. ai giúp em mấy cái bài pascal này với :|
    Bởi lokster trong diễn đàn TIN HỌC CĂN BẢN
    Trả lời: 2
    Bài viết cuối: 10-02-2011, 11:16 PM
  2. pascal
    Bởi promonkey trong diễn đàn TIN HỌC CĂN BẢN
    Trả lời: 4
    Bài viết cuối: 31-03-2009, 08:15 PM
  3. Giải Hộ NW Bài Toán Pascal Này Nha
    Bởi Nu Wang Lam Bieng trong diễn đàn PHẦN CỨNG
    Trả lời: 8
    Bài viết cuối: 24-12-2007, 10:07 AM