Trang 6 / 38 FirstFirst ... 345678911 ... LastLast
Hiển thị kết quả từ 51 đến 60 / 375
  1. #51
    Tham gia
    14-03-2007
    Bài viết
    510
    Like
    0
    Thanked 3 Times in 3 Posts
    Với lại bạn nói thuật toán đi, đọc code tùm lum quá, chả hiểu gì cả...

  2. #52
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Quote Được gửi bởi boysitinh_vl View Post
    To mr_invincible : bạn ơi, mình nghĩ ra cách rồi nhưng cho mình hỏi nếu cho for chạy từ 1->10^9 trong 1s chạy kịp ko zậy?
    1!->1 ; 2!->2; 3!->6; 4!->4; 5!->số cuối khác 0 của (6*4*5)=120->2;
    từ đó:
    6!->số cuối của (2*6)=12->2
    7!->số cuối của (2*7)=14->4
    8!->số cuối của (4*8)=32->2
    9!->số cuối của (2*9)=18->8
    tương tự như thế cho vào for
    Làm vậy ai mà chả biết. Vấn đề là một giây và xử lý các số chia hết cho 5 nên mới khó

  3. #53
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Quote Được gửi bởi boysitinh_vl View Post
    mà bài 1 phức tạp O(n) là sao zậy bạn
    Độ phức tạp tính toán là một trong những khái niệm cơ bản nhất của tin học. Nếu ngay cả đến cái này mà bạn cũng không biết thì tốt nhất bạn nên xem xét lại khả năng của mình đi.

  4. #54
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Quote Được gửi bởi cashier View Post
    Dạo này mấy cao thủ đi đâu hết cả ( anh bete vẫn thấy lên bình thường nhưng có vẻ dạo này "chuyển công tác" sang box khác rồi, Master_Baby thì có lẽ đang nản ... )
    Anh bete phải có topic nào hay hay mới vào cơ còn topic nghe tên kiểu này thì anh chả vào đâu, còn anh Master_Baby bình thường cũng ít khi vào mà

  5. #55
    Tham gia
    02-11-2007
    Location
    Thiên Đường Nhiều Gái Xjnh
    Bài viết
    111
    Like
    0
    Thanked 3 Times in 2 Posts
    Quote Được gửi bởi mr_invincible View Post
    Làm vậy ai mà chả biết. Vấn đề là một giây và xử lý các số chia hết cho 5 nên mới khó
    mình xữ lí rồi đó bạn bạn thử test đi kết quả đúng hoàn toàn, mình mới test tới 1!->60! àh thì kết quả đúng do bận học nên ko test nữa. Khi nhân cho số tận cùng = 5 thì không dc rút lại là ok. bạn xem kỉ lại đi, còn các số 10 20 30 thì cũng giống *1 *2 *3 thuj tại vì chỉ xét số cuối khác 0
    mình bận đi học rùi tối về mình post cách khác nhanh hơn cách đó nữa có thể làm tới ~30 triệu ! nhưng chưa bít đúng hay sai để về test thử ( cách cho quay 9! )
    đã nói mình học ở nhà nên có mấy cái ko bít. giải thích cạn kẻ O(n) cho mình đi cám ơn
    Đi học tới rồi thuật toán sau đi !!!

  6. #56
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Đã nói làm đúng thì rất dễ nhưng để làm đúng trong 1 giây thì không phải là đơn giản -> không ai cần hỏi bạn làm được như thế nào để ra kết quả đúng mà chỉ cần bạn nói xem bạn làm thế nào để ra được kết quả lên đến 10^9
    Còn về độ phức tạp tính toán (O(n) hay O(n^2) hay O(...)) là một khái niệm quá bình thường và đơn giản. Bất kì tài liệu tin học có chất lượng đều phải nhắc đến vấn đề này -> tôi không giải thích ở đây vì có giải thích cũng khó để bạn hiểu và muốn tìm lời giải thích dễ hiểu cho vấn đề này là quá đơn giản

  7. #57
    Tham gia
    14-03-2007
    Bài viết
    57
    Like
    0
    Thanked 8 Times in 4 Posts
    Lâu ko vào forum,thấy cái topic này shock à nha.May quá,đang có bài này ko hiểu,nhờ bạn làm giùm luôn.
    Cho một dãy số 123456789 và một số n.Hãy tìm cách thêm các dấu '+' và '-' vào dãy số để được kết quả là số n
    Ví dụ
    n=45
    1+2+3+4+5+6+7+8+9
    n=171
    12+34+56+78-9
    Nếu có nhiều kết quả thì in ra tất cả các kết quả

  8. #58
    Tham gia
    16-11-2007
    Bài viết
    221
    Like
    0
    Thanked 1 Time in 1 Post
    Cái bài 2 của Mr_invicible đã được đề cập trong số 6 năm 2004 báo Tin học và nhà trường,mong các bạn tham khảo thêm.
    Thuật toán{lấy của người khác,ko phải em}
    Đầu tiên ta cần biết công thức Lagrange như sau:
    x=[N / p] + [N / p^2] + [N / p^3] + ... + [N / p^k]
    với p là số nguyên tố, [] là dấu phần nguyên, x là số mũ của p nếu phân tích n! ra thừa số nguyên tố. k là số thoả p^k<=N
    Thứ 2, ta có nhận xét nếu phân tích ra thừa số nguyên tố thì số mũ của 2 luôn lớn hơn của 5 (cái này có thể dùng định lý trên chứng minh hoặc thừa nhận cũng được)
    Ta lại có n!=n*(n-1)!
    ==> L(n!)=L(L(n).L((n -1)!)) với n không chia hết cho 5
    (với hàm L(x) cho giá trị là chữ số tận cùng khác 0 của x);
    Từ đó ==> nếu ta biết được L((5n)!) thì ta sẽ biết được L((5n+j)!) với j=0,1,2,3,4;
    Một chứng minh tương tự nếu ta có L((25n)!) thì ta sẽ biết được L((25n+5j)!)
    Và tổng quát ta sẽ tính được L((n*5^k+j*5^(k-1))!) theo L((n*5^k)!)
    Còn nếu bạn nào cần code bài đó thì tui sẵn lòng,1 tỉ vẫn thỏa mãn yêu cầu bài toán{thực ra code của mình khá dài,lấy code của người khác,xin mấy bạn thông cảm,học hành chưa thành}
    Code:
    const b1:array[1..4] of integer =(2,4,8,6);
    var n:longint;
       a:array[0..9] of longint;
       f:array[1..9,1..9] of longint;
       ff:array[1..9] of longint;
    
    Procedure tinhtong(n:longint);
    var tg,i:longint;
    begin
        tg:=n div 10;
        for i:=1 to 9 do
            a[i]:=a[i]+tg;
        for i:=tg*10 to n do
            inc(a[i mod 10]);
    end;
    
    Procedure init;
    begin
        fillchar(f,sizeof(f),0);
        f[2,1]:=2;     f[2,2]:=4;     f[2,3]:=8;     f[2,4]:=6;
        f[3,1]:=3;     f[3,2]:=9;     f[3,3]:=7;     f[3,4]:=1;
        f[4,1]:=4;     f[4,2]:=6;
        f[6,1]:=6;
        f[7,1]:=7;     f[7,2]:=9;     f[7,3]:=3;     f[7,4]:=1;
        f[8,1]:=8;     f[8,2]:=4;     f[8,3]:=2;     f[8,4]:=6;
        f[9,1]:=9;     f[9,2]:=1;
    
        ff[2]:=4;     ff[3]:=4;     ff[4]:=2;     ff[6]:=1;
        ff[7]:=4;     ff[8]:=4;     ff[9]:=2;
        ff[5]:=1;     ff[1]:=1;
    end;
    
    Function lui(x1,d1:longint):integer;
    var k1:Integer;
    begin
        case x1 of
             2: k1:=1;
             4: k1:=2;
             8: k1:=3;
             6: k1:=4;
        end;
        d1:=d1 mod 4;
        {lui di d buoc tu k}
        k1:=(k1+4 -d1 -1) mod 4 +1;
        lui:=b1[k1];
    end;
    
    Function tich:longint;
    var i:integer;
       tg:longint;
    begin
    var i:integer;
       tg:longint;
    begin
        tg:=1;
        for i:=1 to 9 do
            a[i]:=f[i,((a[i]-1) mod ff[i]) +1];
       for i:=1 to 9 do
            if a[i]<>0 then
                    tg:=tg*a[i];
        tich:=tg mod 10;
    end;
    
    Procedure xuly;
    var d,k:longint;
    begin
        read(n);
        if n<=1 then
           begin
                writeln(1);
                exit;
           end;
        init;
        d:=0;
        fillchar(a,sizeof(a),0);
        while n<>0 do
              begin
                   tinhtong(n);
                   n:=n div 5;
                   d:=d+n;
              end;
        k:=tich;
        writeln(lui(k,d mod 4));
    end;
    
    begin
        xuly;
        readln;
    end.
    @boysitinh_vl:nếu bạn ko khinh tui vì hiểu biết thấp kém thì cho tui nói 1 tí.Có thể tài liệu của bạn nhiều thật,bạn cũng đã có 1 trình độ nhất định nào đó nhưng bạn có thể nể trọng người khác 1 chút xíu được ko.Ngay cả tên nick của bạn cũng đã thể hiện rồi,''vl'' là viết tắt của từ gì,có lẽ chúng tôi đều hiểu,chỉ là ngại ko nói ra.Nếu bạn có thể nằm trong top ten của IOI thì tui xin ngả mũ kính phục,còn lập 1 topic gây shock như bạn thì xin lỗi bạn,chúng tôi thà có 1 người có đức còn hơn có tài.
    @mr_invincible:bạn có thể nói cho mình tư tưởng bài đó của bạn được ko.Dạo này mình cũng đang nghĩ nhiều về bài đó.
    Được sửa bởi phuclun lúc 21:43 ngày 13-03-2008

  9. #59
    Tham gia
    24-05-2007
    Bài viết
    33
    Like
    0
    Thanked 0 Times in 0 Posts

    Cần chú ý ! Cho em hỏi 1 tí nữa với !

    Cho em làm phiền anh 1 tí nữa nha.Cái bài 3 ấy, mình cần thêm những câu lệnh nào để đưa ra danh sách học sinh xếp loại A nhỉ?




    [QUOTE=

    bài 3: sách tin học lớp 11 trang 77[/QUOTE]
    program Xep_loai;
    uses crt;
    const max=60;
    Type hocsinh record
    hoten:string[20];
    ngaysinh:string[10];
    diachi:string[50];
    toan,van:real;
    xeploai:char;
    end;
    var
    lop:array[1..Max] of hocsinh;
    N.i:byte;
    begin
    clrscr;
    write('so luong hoc sinh trong lop n=');readln(N);
    for i:=1 to N do
    begin
    writeln('nhap so lieu ve hoc sinh thu',i,':');
    write('ho va ten:');readln(lop[i].hoten);
    write('ngay sinh:');readln(lop[i].ngaysinh);
    write('dia chi:');readln(lop[i].diachi);
    write('diem toan:');readln(lop[i].toan);
    write('diem van:');readln(lop[i].van);
    if lop[i].toan + lop[i].van >=18
    then lop[i].xeploai:='A';
    if (lop[i].toan + lop[i].van >=14) and (lop[i].toan + lop[i].van <18)
    then lop[i].xeploai:='B';
    if (lop[i].toan + lop[i].van >=10) and (lop[i].toan + lop[i].van <14)
    then lop[i].xeploai:='C';
    if (lop[i].toan + lop[i].van <10) then lop[i].xeploai:='D';
    end;
    clrscr;
    writeln('danh sach xep loai hoc sinh trong lop:');
    for i:=1 to N do
    writeln(lop[i].hoten:30,'-Xep loai:',lop[i].xeploai;
    readln
    end.

  10. #60
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Quote Được gửi bởi phuclun View Post
    @mr_invincible:bạn có thể nói cho mình tư tưởng bài đó của bạn được ko.Dạo này mình cũng đang nghĩ nhiều về bài đó.
    Bài nào vậy? Nếu là bài 1 của mình thì ... mình cũng không biết làm . Chẳng qua thấy người đặt ra topic này quá ghê gớm nên post lên để xem thực chất hắn thế nào. Mà bài đó cũng đâu phải khó, chẳng qua trình độ mình quá bình thường, còn trên SPOJ cả gần trăm người làm được

Trang 6 / 38 FirstFirst ... 345678911 ... LastLast

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
  •