Trang 9 / 16 FirstFirst ... 4678910111214 ... LastLast
Hiển thị kết quả từ 81 đến 90 / 158
  1. #81
    Tham gia
    01-05-2006
    Location
    Viettel Telecom
    Bài viết
    623
    Like
    0
    Thanked 1 Time in 1 Post
    haha, vui nhỉ, đến giờ em vẫn chưa hiểu đề

  2. #82
    Tham gia
    03-01-2007
    Bài viết
    34
    Like
    0
    Thanked 0 Times in 0 Posts
    Bó tay dot com. ) ) )
    Thế này : Từ các chữ số của số đó, ta xóa đi một số vị trí. Khi đó ta thu được 1 số mới (gồm các chữ số còn lại giữ nguyên thứ tự). Số nào mà không tòn tại cách xóa để ra được là số cần tìm.
    VD
    12345678901234567890
    số 1 nhận được bằng cách xóa hết các số trừ số thứ 1.
    tương tự với 2 -> 9.
    Số 10 nhận được bằng cách xóa : 12345678901234567890
    tương tự ta có thể tạo thành đến số 99. bằng cách xóa :
    12345678901234567890
    Số 100 : 12345678901234567890
    Tương tự : 101 có thể tạo ra được ... cho đến 110. 111 không thể tạo ra được.

  3. #83
    Tham gia
    03-01-2007
    Bài viết
    34
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi Master_Baby View Post
    Thía này: cho một số có 1000 chữ số, ta có thể tạo ra số mới = cách xóa đi các chữ số trong 1000 chữ số đó. Vấn đề đặt ra là nếu xóa đi các chữ số đó bằng mọi cách thì những số nào sẽ không tạo ra được, vd dãy 123 nếu xóa đi bất kỳ số nào hay xóa tất đều ko thể tạo được số 4, 5, 6... và trong những số đó chọn ra số nhỏ nhất.
    - Thực ra bài này thuật toán ko khó, mảng 2 chiều, 1000 cột và 2 dòng. Dòng đầu ghi các chữ số, dòng 2 ghi các giá trị true/false. Mặc định là false.
    - Đầu tiên ta search xem có chữ số nào từ 0->9 ko có trong dãy ko. Nếu ko => nhảy bước tiếp, nếu có => in chữ số đó ra và kết thúc.
    - Từ đây bắt đầu vòng lặp. Ta lựa chữ số đầu tiên, duyệt hết 1000 chữ số với số thử từ 1->9. Ta chọn chữ số 1 đầu tiên, bỏ hết các chữ số đằng trước nó, rồi thử tìm đằng sau nó có chữ số nào từ 0->9 ko có trong dãy ko. Nếu có => in chữ số được chọn và chữ số ko xuất hiện ra rồi kết thúc. Nếu ko => bỏ chữ số được chọn, tiếp tục thử chọn chữ số đằng sau nó xem sao.
    - Ta có thể chắc chắn số tìm được nhiều nhất là 2 chữ số:
    cho dãy 123543322....894230
    thì giả sử các chữ số đằng trước đều ko chọn được, ta có thể chọn 2 chữ số sau cùng của dãy: 30 từ đó suy ra số nhỏ nhất ko viết được là 31.
    Bạn hiểu đúng đề bài nhưng thuật toán sai, bạn xem lại ví dụ 12345678901234567890

  4. #84
    Tham gia
    01-05-2006
    Location
    Viettel Telecom
    Bài viết
    623
    Like
    0
    Thanked 1 Time in 1 Post
    Có ai giao đề chính thức đi chứ

  5. #85
    Tham gia
    28-09-2004
    Location
    Hà Nội
    Bài viết
    290
    Like
    0
    Thanked 1 Time in 1 Post
    Ơ kìa sao im re hết thế này
    Làm 1 bài xả xì trét nhé ^^. Ko cần code , thuật toán thôi
    Dùng TP
    Cho 1 file , có n dòng ( n <= 1 triệu đi =)) ) Mỗi dòng là 1 số ( nhiều nhất là 10 chữ số đi =)) )
    Trong đó có 1 nửa số các số là giống nhau . Tìm số đấy.
    Have fun ^^

  6. #86
    Tham gia
    01-05-2006
    Location
    Viettel Telecom
    Bài viết
    623
    Like
    0
    Thanked 1 Time in 1 Post
    Ý anh là tìm số nào mà lặp lại >= n/2 lần trong file đúng ko ạ

  7. #87
    Tham gia
    02-05-2006
    Bài viết
    80
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi Rikku View Post
    Ơ kìa sao im re hết thế này
    Làm 1 bài xả xì trét nhé ^^. Ko cần code , thuật toán thôi
    Dùng TP
    Cho 1 file , có n dòng ( n <= 1 triệu đi =)) ) Mỗi dòng là 1 số ( nhiều nhất là 10 chữ số đi =)) )
    Trong đó có 1 nửa số các số là giống nhau . Tìm số đấy.
    Have fun ^^
    Mình muốn đổi lại 1 chút là các số <2 tỷ thôi cho dễ biểu diễn. Thuật toán như sau:

    Giả sử có n số.
    Đổi tất cả các số ra nhị phân và đếm số lần xuất hiện của 0,1 ở các vị trí bit thứ 0,2,..31, nếu 1 số xuất hiện ít nhất n/2 lần => số lần xuất hiện của các bit của số đó tại tất cả các vị trí đều >= n/2.

    Đọc file lần thứ 1, ta đếm số lần xuất hiện của các bit 0,1. Sau khi đếm xong ta có 1 số tạo bởi các bit (0,1,..31) có số lần xuất hiện nhiều nhất (gọi là x).

    Đọc file lần 2, đếm số lần xuất hiện của x. nếu >= n/2 thì số đó là x, nếu ko thì ko có số nào xuất hiện quá n/2 lần.

  8. #88
    Tham gia
    01-05-2006
    Location
    Viettel Telecom
    Bài viết
    623
    Like
    0
    Thanked 1 Time in 1 Post
    Một cách giải hay ...

  9. #89
    Tham gia
    28-09-2004
    Location
    Hà Nội
    Bài viết
    290
    Like
    0
    Thanked 1 Time in 1 Post
    Nice nice. Suýt đúng đáp án ^^
    Sao lại phải đổi ra bit làm gì , 10 chữ số là 10 chữ số ^^ ko đổi đề

  10. #90
    Tham gia
    09-07-2006
    Location
    Hà Nội
    Bài viết
    128
    Like
    0
    Thanked 0 Times in 0 Posts
    // Đọc file lần 1
    Code:
    result:=0;count:=0;
    For i := 1 to n do begin
       read(f,k);
       if (k=result) then inc(count) else dec(count);
       if (count<0) then begin result:=k; count:=1; end;
    end;
    // Đọc file lần 2 để check lại kết quả
    ...

Trang 9 / 16 FirstFirst ... 4678910111214 ... 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
  •