Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 14

Chủ đề: Số phong phú!

  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    13

    Số phong phú!

    Đề ra: Số phong phú là số có tổng các ước nguyên của nó (không bao gồm nó) lớn hơn nó. Ví dụ: 6, có ước 1, 2, 3-> 6 không là số phong phú. 12 có ước là 1, 2, 3, 4 6 -> 12 là số phong phú. Sử dụng thiết bị nhập xuất chuẩn, tìm xem có bao nhiêu số phong phú trong đoạn [L;R].
    Lưu ý:
    - L và R trên cùng một hàng cách nhau bởi " ".
    - 1<=L<=R<=1,000,000,000 (10^9)

    Code của mình chỉ qua được 60% test, các bạn hãy đưa ra code tốt hơn nhé!
    Code của mình :bawling::
    Mã:
    var l,r,d,i:longint;
    function pp(x:longint):boolean;
    var s,i:longint;
    begin
           s:=1;
           for i:=2 to trunc(sqrt(x)) do
                   if x mod i=0 then
                           begin
                                   s:=s+i;
                                   if i<>(x div i) then
                                           s:=s+(x div i);
                           end;
           if s>x then pp:=true
           else pp:=false;
    end;
    BEGIN
           read(l,r);
           d:=0;
           for i:=l to r do
                   if pp(i) then inc(d);
           write(d);
    END.

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    bài này trước có trên spoj và thầy mình đã cho làm rồi . Nhưng mỗi tội quên béng mất rồi .

  3. #3
    Ngày tham gia
    Dec 2015
    Bài viết
    45
    Sao lại chỉ được có 60% nhỉ, thuật toán đúng, chắc là do vượt giới hạn.
    Theo mình: dựa trên code của bạn nhé, chỗ để tăng s thì thêm 1 if then nữa để kiểm tra, nếu s>x thì dừng luôn việc kiểm tra vs tính ước. 1 điều nữa nên sửa là biến toàn cục với biến địa phương bạn nên dùng khác nhau, nếu để i cùng là biến toàn cục và biến địa phương thì có thể dẫn tới sai xót, và khi kiểm tra lại chương trình cũng khó theo dõi.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Nếu sai thì ở test nhỏ đã sai rồi. Em nên thử với test lớn để biết mình sai ở chỗ nào!

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    em nghĩ có thể do các test lớn ko chạy đủ thời gian .

  6. #6
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Mã:
    const fi=''; 
          fo=''; 
    var  f,z:text; 
          nt:array [0..100100] of boolean; 
          uoc:array [0..100100] of longint; 
          a,b,i,j,tam,sum1,sum2,kq:longint; 
    
    
    begin 
        assign(f,fi); 
        reset(f); 
        assign(z,fo); 
        rewrite(z); 
    
        read(f,a,b); 
    
        for i:=2 to b do 
            begin 
                  for j:=2 to b div i do 
                      inc(uoc[i*j],i); 
                  if (uoc[i]>=i) then 
                    inc(sum2); 
            end; 
    
        for i:=2 to a-1 do 
            if (uoc[i]>=i) then 
                inc(sum1); 
    
        writeln(z,sum2-sum1); 
    
        close(z); 
        close(f); 
    end.
    Em thử code này thử xem! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

  7. #7
    Ngày tham gia
    Jan 2016
    Bài viết
    6
    Chưa chắc test nhỏ đúng mà test lớn đã đúng đâu, tại vì với test lớn, thời gian sẽ lớn hơn và có thể vượt quá thời gian cho phép, hơn nữa, với test lớn, giá trị các biến sẽ lớn, có thể vượt quá giới hạn kiểu dữ liệu khai báo.

  8. #8
    Ngày tham gia
    Jan 2016
    Bài viết
    47
    Hiện Nguyên đã vượt qua 100% các test, code trên không sai gì cả, chỉ là không qua nổi thời gian chạy. Thêm một câu vào @@:
    Mã:
    if s>x then
       begin
               pp:=true;
               exit;
      end;

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    10^9 mà e cho 2 for . Chạy sao nổi e [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

  10. #10
    Ngày tham gia
    Nov 2015
    Bài viết
    5
    Trích dẫn Gửi bởi hang_vt
    10^9 mà e cho 2 for . Chạy sao nổi e [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Chạy không nổi thật, nhưng nhờ câu code trên đã vượt qua test một cách "không đầy đủ lắm" (hơi ăn gian về phần chạy).
    Nhiều số lớn chỉ cần chạy đến một số ước nhất định là vượt qua rồi chị.
    p/s em không ngờ qua nổi cả 100% :emlaugh:

Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •