Trang 1 / 5 1234 ... LastLast
Hiển thị kết quả từ 1 đến 10 / 41
  1. #1
    Tham gia
    17-03-2010
    Location
    Mê Linh - Hà Nội
    Bài viết
    517
    Like
    0
    Thanked 5 Times in 4 Posts

    Đề thi học sinh giỏi Tin thành phố Hà Nội Lớp 12 năm 2010 - 2011

    Mình post cho mọi người cùng làm và thảo luận nha.
    Bài 1: Đèn nhấp nháy
    Trong dịp đại lễ 1000 năm thăng long hà nội, An quan sát thấy nhiều đèn nhấp nháy được trang trí trên các đường phố. Vốn là một học sinh yêu thích môn tin học và vật lý. An quyết định tự tạo một dây đèn nhấp nháy đặc biệt. Dây đèn của An gồm n bóng nối tiếp nhau, đánh số thứ tự từ 1 đến n và được điều khiển theo nguyên tắc: Bắt đầu từ thời điểm 0 tất cả các bóng đèn đều ở trạng thái tắt, bóng thứ i sẽ lóe sáng và các thời điểm ti, 2 ti, 3 ti (i=1,2,...,n). An chờ đợi và muốn biết thời điểm nào mà cả n bóng đều cùng lóe sáng.
    Ví dụ t1 = 4 thì tại các thời điểm 4, 8 , 12 , 16, 20 .. bóng đèn 1 lóe sáng, t2=6 thì tại các thời điểm 6, 12, 18, 24, 30... bóng đèn 2 sẽ lóe sáng. Như vậy, thời điểm 12 sẽ là thời điểm sớm nhất mà cả 2 bóng đèn đều cùng lóe sáng.
    Yêu cầu: Cho t1, t2, ... tn, hãy giúp An tính thời điểm sớm nhất mà tất cả n bóng đều lóe sáng.
    Dữ liệu: Vào từ file văn bản Bai1.INP có dạng:
    - Dòng đầu tiên chứa số nguyên dương n (2 <= n <= 30)
    - Dòng thứ hai chứa n số nguyên dương t1, t2, ... tn (ti <= 10^6).
    Kết quả: Ghi ra file văn bản Bai1.Out thời điểm sớm nhất mà tất cả n bóng đèn đều lóe sáng.
    Ví dụ
    Bai1.INP:
    2
    4 6
    Bai1.OUT
    12
    Bài 2:
    Mật khẩu
    Một xâu ký tự được gọi là mật khẩu "an toàn" nếu xâu có độ dài ít nhất = 6 và xâu chứa ít nhất một chữ cái in hoa ('A'..'Z'), một chữ cái thường, một chữ số.
    Ví dụ: 'a1B2C3', 'tinHoc6' là hai mật khẩu "an toàn", còn 'a1B2C', 'a1b2c3', 'A1B2C3', 'tinhoc' đều không phải là mật khẩu "an toàn".
    Một lần, Bình nhìn thấy một xâu S, chỉ gồm các loại ký tự: chữ cái in hoa, chữ cái thường và chữ số. Bình muốn tự kiểm tra khả năng đoán nhận mật khẩu bằng cách đếm xem có bao nhiêu cặp chỉ số (i,j) thỏa mãn đkiện: 1 <=i<j<=length(s) và xâu con gồm các ký tự liên tiếp từ i đến j của S là mật khẩu "an toàn".
    Yêu cầu: Cho xâu S, tính số lượng cặp chỉ số (i,j) thỏa mãn điều kiện nêu trên.
    Dữ liệu: Vào từ file văn bản Bai2.INP gồm một dòng chứa xâu S có độ dài không quá 100.
    Kết quả: Ghi ra file văn bản Bai2.OUT một số nguyên là số lượng cặp chỉ số (i,j) tính được.
    Ví dụ:
    Bai2.INP
    abc3456789PQ
    Bai2.OUT
    6
    Ví dụ 2:
    Bai2.INP
    abc123
    Bai2.OUT
    0
    Bài 3: Bàn cờ
    Cho một bàn cờ kích thước m x n ô, các dòng được đánh số từ 1 đến m từ trên xuống dưới, các cột được đánh số từ 1 đến n từ trái qua phải. Ô nằm ở vị trí dòng i và cột j của lưới được gọi là ô (i,j) và khi đó, i được gọi là chỉ số còn j được gọi là chỉ số cột của ô này. Được phép đặt một quân vua vào một ô của bàn cờ (mỗi ô đặt không quá một quân), khi đó nó có thể khống chế 8 ô lân cận xung quanh (8 ô được đánh số từ 1 đến 8, xem hình vẽ dưới đây).
    1 2 3
    8 x 4 (x là quân hậu)
    7 6 5
    Trên bàn cờ đã đặt trước một số quân vua (không có 2 quân nào khống chế nhau), người ta muốn đặt thêm nhiều nhất các quân vua lên bàn cờ mà vẫn đảm bảo không có 2 quân vua nào khống chế nhau.
    Yêu cầu: Cho biết các ô đã đặt quân vua, hãy đặt thêm nhiều nhất quân vua lên bàn cờ sao cho trên bàn cờ không có 2 quân nào khống chế nhau.
    Dữ liệu: Vào từ file văn bản Bai3.INP có dạng
    - Dòng đầu tiên chứa 3 số nguyên m,n,k (0<m , n < 30; 0 <=k<=m mx n). Trong đó m,n là kích thước bàn cờ, k là số quân vua đã được đặt trên bàn cờ.
    - Dòng thứ i trong k dòng tiếp theo gồm 2 số ai ,bi là chỉ số dòng và chỉ số cột của ô thứ i đã có quân vua.
    Kết quả: Ghi ra file văn bản Bai3.OUT có dạng:
    - Dòng đầu tiên ghi số nguyên s là số lượng nhiều nhất quân vua được đặt thêm lên bàn cờ.
    - Dòng thứ i trong s dòng tiếp theo gồm 2 số xi, yi là chỉ số dòng và chỉ số cột của quân vua thứ i được đặt thêm lên bàn cờ (nếu có nhiều phương án đưa ra một phương án bất kỳ).
    Ví dụ:
    Bai3.INP
    2 3 0
    Bai3.OUT
    2
    1 1
    2 3
    Ví dụ 2
    Bai3.INP
    3 3 1
    2 2
    Bai3.OUT
    0
    Được sửa bởi vzic lúc 17:15 ngày 16-10-2010
    Quote Quote

  2. #2
    Tham gia
    26-12-2008
    Bài viết
    41
    Like
    0
    Thanked 2 Times in 2 Posts
    Bài này có vẻ như là tìm bội chung nhỏ nhất của n số t1,t2...tn. vzic còn bài 2 bài 3 gì đó post luôn đi.

  3. #3
    Tham gia
    01-02-2010
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài 2 : Xâu S chỉ có 100 ký tự nên ta vét cạn
    Function kiemtra(i,j:integer);
    Var ct,ch,cs:Boolean;
    k:integer;
    Begin
    ct:=false;
    ch:=false;
    cs;=false;
    For k:=i to j do
    Begin
    Case a[k] of
    'A'..'Z':ch:=true;
    'a'..'z':ct:=true;
    '1'..'9':cs:=true;
    End;
    End;
    If ct and cs and ch then kiemtra:=true;
    End;

    BEGIN
    For i:=1 to length(S)-5 do
    For j:=i+5 to length(S) do
    Begin
    If Ktra(i,j) then dem:=dem+1;
    End;
    END;

  4. #4
    Tham gia
    18-10-2010
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    Ngạc nhiên

    Mọi người xem hộ em bài 3 cái
    không hiểu sao với các test nhỏ (n,m<20) thì các toạ độ được viết xuống dòng, còn lại thì nó lại write trên cùng 1 dòng. đây là code bài 3 của em
    {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
    {$M 16384,0,655360}
    program bai3;
    uses crt;
    var dd:array[1..30,1..30] of boolean;
    m,n,i,j,k:integer;a,b:byte;
    tong:integer;
    f,g,f1:text;

    procedure put(i,j:byte);
    var p:byte;
    begin
    dd[i,j-1]:=false;
    dd[i-1,j]:=false;
    dd[i,j+1]:=false;
    dd[i+1,j]:=false;
    dd[i-1,j+1]:=false;
    dd[i+1,j-1]:=false;
    dd[i+1,j+1]:=false;
    dd[i-1,j-1]:=false;
    dd[i,j]:=false;

    end;

    procedure nhap;
    var x:byte;f:text;
    begin
    tong:=0;
    assign(f,'bai3.inp');
    reset(f);
    readln(f,m,n,k);
    for i:=1 to m do
    for j:=1 to n do dd[i,j]:=true;

    for x:=1 to k do
    begin
    read(f,i,j);
    put(i,j);
    end;
    close(f);
    end;

    procedure tinh;
    var dem:integer;
    begin
    for i:=1 to m do
    for j:=1 to n do
    if dd[i,j] then
    begin
    put(i,j);
    inc(tong);
    end;
    end;

    procedure tinh2;
    var dem:integer;
    begin
    for i:=1 to m do
    for j:=1 to n do
    if dd[i,j] then
    begin

    writeln(f,i,' ',j);
    put(i,j);
    end;
    end;

    BEGIN
    assign(f,'bai3.out');
    rewrite(f);
    nhap;
    tinh;
    writeln(f,tong);
    nhap;
    tinh2;
    close(output);
    END.
    Thank trước

  5. #5
    Tham gia
    11-02-2010
    Bài viết
    39
    Like
    1
    Thanked 0 Times in 0 Posts
    hi, mình cũng vừa thi xong (đc 16.5 điểm)
    bài 3 nếu làm như cách của bạn thì ko đúng hoàn toàn đâu.
    VD: input:
    4 13 5
    1 5
    2 2
    2 8
    2 11
    2 13
    output: nếu làm theo cách của bạn thì kq là 6, nhưng thực tế phải là 7.

    Bài 1 bạn làm thế nào? Với 50% test lớn thì cách tìm ucln có vẻ ko khả thi. Nhưng cũng ko thể phân tích thành thừa số nguyên tố vì phải dùng TP.

  6. #6
    Tham gia
    18-10-2010
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    Nói nhỏ nè !

    thế theo bạn bài 3 làm như thế nào. mình chỉ dùng đánh dấu toàn bộ mảng bằng 1 mẳng đánh dấu 30*30, sau đó nhập tử tệp, đặt những con vua vào ô, sau đó duyệt toàn bộ những ô còn lại thôi.
    Còn bài 1 thì theo mình là phải phân tích số, chứ làm bcnn=tích/ucln thì có vẻ ko khả thi lắm. vì nếu test cho toàn số nguyên tố thì chạy khá lâu.

    [=========> Bổ sung bài viết <=========]

    Bạn có code bài 3 không, có thể up lên hộ mình không
    Được sửa bởi kkkjunio lúc 19:30 ngày 22-10-2010 Reason: Bổ sung bài viết

  7. #7
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts
    Mình thấy bài 2 bạn duynhan1 giải đúng đấy!
    Được sửa bởi lehang_gb1 lúc 21:24 ngày 22-10-2010

  8. #8
    Tham gia
    18-10-2010
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts

    Nói nhỏ nè !

    chính xác đấy. tuy nhiên mình mạo muội có 1 ý kiến nho nhỏ này.
    khi các bạn kiểm tra, nếu gặp cả 3 điều kiện đúng thì break luôn.

  9. #9
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts
    tất nhiên như thế thì đỡ tốn thời gian thực hiện

  10. #10
    Tham gia
    11-02-2010
    Bài viết
    39
    Like
    1
    Thanked 0 Times in 0 Posts
    Bài 3: đặt vào ô nào kiểm soát đc ít ô nhất.

    uses crt;
    const
    fi='banco.i12';
    fo='banco.o12';
    nm=31;
    x:array[1..8] of shortint=(-1,0,1,-1,1,-1,0,1);
    y:array[1..8] of shortint=(-1,-1,-1,0,0,1,1,1);
    var f:text;m,n:byte;k:word;a,b:array[0..nm,0..nm] of byte;d:word;
    tx,ty:array[1..nm*nm] of byte;

    procedure nhap;
    var i:word;j,u,v:byte;
    begin
    assign(f,fi);reset(f);
    readln(f,m,n,k);fillchar(a,sizeof(a),0);
    for i:=1 to k do
    begin
    readln(f,u,v);
    for j:=1 to 8 do
    a[u+x[j],v+y[j]]:=2;
    a[u,v]:=1;
    end;
    close(f);
    end;

    procedure timmin(var im,jm:byte);
    var i,j,k:byte;min:byte;
    begin
    fillchar(b,sizeof(b),0);min:=255;im:=0;jm:=0;
    for i:=1 to m do
    for j:=1 to n do
    if a[i,j]=0 then
    begin
    for k:=1 to 8 do
    if (i+x[k]>0) and (i+x[k]<=m) and (j+y[k]>0) and (j+y[k]<=n) and (a[i+x[k],j+y[k]]>=0) then
    inc(b[i,j]);
    if b[i,j]<min then
    begin
    min:=b[i,j];im:=i;jm:=j;
    end;
    end;
    end;


    procedure xuli;
    var im,jm,k:byte;
    begin
    d:=0;
    repeat
    timmin(im,jm);
    if (im=0) then break;inc(d);tx[d]:=im;ty[d]:=jm;
    a[im,jm]:=1;for k:=1 to 8 do a[im+x[k],jm+y[k]]:=2;
    until false;
    end;

    procedure xuat;
    var i:word;
    begin
    assign(f,fo);rewrite(f);
    writeln(f,d);
    for i:=1 to d do
    writeln(f,tx[i],' ',ty[i]);
    close(f);
    end;

    begin
    nhap;xuli;xuat;
    end.

    Bài 1: cách phân tích thành thừa số nt rất tốt, nhưng mình lại phải dùng TP nên ko thể (a[i] lên đến 1tr).

Trang 1 / 5 1234 ... 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
  •