game box tin - Chém code như chém gió

Thảo luận trong 'Thảo luận chung' bắt đầu bởi cuong276, 10 Tháng sáu 2012.

Lượt xem: 25,750

  1. cuong276

    cuong276 Guest

    N ở dạng integer là được. Khỏi tốn bộ nhớ của máy. :D
     
  2. mikelhpdatke

    mikelhpdatke Guest

    Dùng sàng nguyên tố. Sau đó duyệt i:=1->n + áp dụng vào cái sàng được :D. Bây giờ máy lag ko code nổi, mở FP ko đc :(
     
  3. cuong276

    cuong276 Guest

    :)):)):)) Có cần làm dùm không
    Mã:
    var n,i,d:integer;
    function ktnt(a:integer):boolean;
    var i:integer;
        kt:boolean;
    begin
         kt:=true;
         if a<2 then kt:=false
         else
             for i:=2 to (a div 2) do
                 if a mod i=0 then
                    begin
                         kt:=false;
                         break;
                    end;
         ktnt:=kt;
    end;
    begin
         write('n=');readln(n);
         d:=0;
         for i:=2 to n div 2 do
             if (n mod i=0) and (ktnt(i)=true) then
                begin
                     write(i,'  ');
                     inc(d);
                end;
         if d=0 then write('KHONG CO');
         readln;
    end.
    OK! ra đề tiếp đi. Đừng ra khó quá để ai cũng được chơi.
     
  4. mikelhpdatke

    mikelhpdatke Guest

    Không cần đâu :))

    Bài 30/2000 - Phần tử yên ngựa
    (Dành cho học sinh THCS)
    Cho bảng A kích thước MxN. Phần tử Aij được gọi là phần tử yên ngựa nếu nó là phần tử nhỏ nhất trong hàng của nó đồng thời là phần tử lớn nhất trong cột của nó. Ví dụ trong bảng số sau đây:
    15 3 9
    55 4 6
    76 1 2
    thì phần tử A22 chính là phần tử yên ngựa.
    Bạn hãy lập chương trình nhập từ bàn phím một bảng số kích thước MxN và kiểm tra xem nó có phần tử yên ngựa hay không?
     
  5. cuong276

    cuong276 Guest

    Cái bài này mình làm rồi. Sẵn có code đây luôn
    Mã:
    var i,d,m,n,j:integer;
        a:array[1..100,1..100]of integer;
        max:array[1..100]of integer;
        min:array[1..100]of integer;
    begin
         write('nhap m='); readln(m);
         write('nhap n='); readln(n);
         for i:=1 to m do
             begin
                  for j:=1 to n do
                      begin
                           write('a[',i,',',j,']=');
                           read(a[i,j]);
                      end;
                  readln;
             end;
         for i:=1 to m do
             begin
                  max[i]:=-maxint;
                  for j:=1 to n do
                      if a[i,j]>max[i] then max[i]:=a[i,j];
             end;
         for j:=1 to n do
             begin
                  min[j]:=maxint;
                  for i:=1 to m do
                      if a[i,j]<min[j] then min[j]:=a[i,j];
             end;
         d:=0;
         for i:=1 to m do
             for j:=1 to n do
                 if min[j]=max[i] then d:=d+1;
         if d=0 then writeln('ko co phan tu yen ngua')
         else writeln('cac phan tu yen ngua la:');
         for i:=1 to m do
             begin
                  d:=0;
                  for j:=1 to n do
                      begin
                           if min[j]=max[i] then d:=d+1;
                           if d<>0 then
                              begin
                                   write('a[',i,',',j,']');
                                   d:=0;
                              end;
                      end;
             end;
         readln;
    end.
    OK rồi chứ. Đề ra tiếp nè. Viết chương trình nhập vào 2 đa thức cùng biến. Cộng 2 đa thức đó lại rồi in kết quả ra màn hình.
     
  6. quanghero100

    quanghero100 Guest

    Mã:
    uses crt;
    var a:array[1..100,1..100] of integer;
        i,j,n,d:integer;
    function maxcot(k,j:integer):boolean;
    var i:integer;
    begin
       maxcot:=true;
       for i:=1 to n do
         if k<a[i,j] then maxcot:=false;
    end;
    function minhang(k,i:integer):boolean;
    var j:integer;
    begin
       minhang:=true;
       for j:=1 to n do
          if k>a[i,j] then minhang:=false;
    end;
    begin
      clrscr;
      readln(n);
      for i:=1 to n do
         begin
           for j:=1 to n do
              read(a[i,j]);
           readln;
         end;
      d:=0;
      for i:=1 to n do
         for  j:=1 to n do
           if (minhang(a[i,j],i)=true) and (maxcot(a[i,j],j)=true) then
              begin
                 writeln('a[',i,',',j,']');
                 inc(d);
              end;
      if d=0 then writeln('khong co phan tu yen ngua');
      readln;
    end.
     
  7. cuong276

    cuong276 Guest

    Nếu không ai làm bài này thì tớ "xử" luôn vậy
    Mã:
    var i,m,n:integer;
          a,b,s:array[1..100]of integer;
    begin
          write('bac da thuc 1:');readln(m);
          write('bac da thuc 2:');readln(n);
          for i:=m downto 0 do
               begin
                      write('a[',i,']*x^',i,',a[',i,']=');
                      readln(a[i]);
               end;
          for i:=n downto 0 do
               begin
                      write('b[',i,']*x^',i,',b[',i,']=');
                      readln(b[i]);
               end;
          if m<n then
             begin
                    for i:=m+1 to n do a[i]:=0;
                    m:=n;
             end;
          if m>n then
             begin
                    for i:=n+1 to m do b[i]:=0;
                    n:=m;
             end;
          writeln('Tong la:');
          for i:=m downto 0 do
               begin
                     s[i]:=a[i]+b[i];
                     if i<>0 then write(s[i],'*x^',i,' + ');
                     if i=0 then write(s[i]);
               end;
          readln;
    end.
    OK! Xong rồi. Bây giờ ai có bài hay thì post lên cho ae chém nào
     
  8. mikelhpdatke

    mikelhpdatke Guest

    Có đây
    viết chương trình in ra màn hình như sau:

    1
    232
    34543
    4567654
    567898765
    67890109876
    7890123210987
    890123454321098
    90123456765432109
    0123456789876543210​

    P/s: Title cuong276 đặt nổi trội ghê :))
    @C: Không được viết chữ màu đỏ đâu nha.
    Thân
     
    Last edited by a moderator: 24 Tháng sáu 2012
  9. cuong276

    cuong276 Guest

    Ha ha ha. Bài này quá dễ. Chỉ cần in cái tam giác đó là được chứ gì. Xem ta chém đây. Yaaaaaaa!
    Mã:
    begin
         writeln('1':10);
         writeln('232':11);
         writeln('34543':12);
         writeln('4567654':13);
         writeln('567898765':14);
         writeln('67890109876':15);
         writeln('7890123210987':16);
         writeln('890123454321098':17);
         writeln('90123456765432109':18);
         writeln('0123456789876543210':19);
         readln;
    end.
    
    Xong.Đơn giản, gọn gàng và đúng 100%
     
  10. mikelhpdatke

    mikelhpdatke Guest

    Bài 2 : Cân đĩa
    Cho một cân đĩa và n quả cân đánh số từ 1 tới n. Quả cân thứ i có khối lượng là i (i = 1..n). Với một vật khối lượng m, người ta đặt vật đó vào đĩa cân bên trái sau đó đặt thêm một số quả cân lên hai đĩa cân sao cho cân thăng bằng, từ đó xác định khối lượng của vật. Ta gọi một cách làm như vậy là một cách cân vật có khối lượng m.

    Hai cách cân được gọi là khác nhau nếu tập các quả cân ở đĩa trái trong hai cách cân là khác nhau hoặc tập các quả cân ở đĩa phải trong 2 cách cân là khác nhau.

    Ví dụ với n = 4, m = 2 ta có 7 cách cân:

    2 - 2
    2 1 - 3
    2 2 - 4
    2 2 - 1 3
    2 3 - 1 4
    2 4 - 1 2 3
    2 1 3 - 2 4

    (Số đầu tiên bên trái của mỗi hàng là vật nặng m)
    Test
    n = 4,m = 2
    n = 6,m = 11
    n = 10,m = 22
    n = 11,m = 33
    n = 13,m = 44
    n = 16,m = 55
    n = 25,m = 66
    n = 36,m = 77
    n = 99,m = 88
    n = 100,m = 100

    Chém tiếp đi cuong :))
     
  11. cuong276

    cuong276 Guest

    Chơi xấu nha. Dám chơi đề thi quốc gia ra à. Đã thế thì tớ sẽ chém tan tác bài bài luôn. hahaha :))
    Mã:
    uses crt; 
    var a,b,cant,canf : array [0..101] of integer; 
        c : array [1..100] of boolean; 
        dem : integer;
        n,m,s : integer; 
        fi : text; 
    
    procedure tri (j : integer); 
    var t,l : integer; 
    begin 
      for t:= b[j-1]+1 to n do 
        If c[t] then 
          begin 
            b[j] := t; 
            canf[j] := canf[j-1]+t; 
            c[t] := false; 
            If cant[s] = canf[j] then inc (dem); 
            If cant[s] >= canf[j] then tri (j+1); 
            c[t] := true; 
          end; 
    end; 
    
    procedure timso(so : integer); 
    var t,i,l : integer; sum : longint; 
    begin 
      For i:= a[so-1]+1 to n do 
        If c[i] then 
          begin 
            a[so] := i; 
            canT[so] := cant[so-1] + i; 
            c[i] := false; 
            sum := 0; 
            for t:= 1 to n do 
              If c[t] then sum := sum + t; 
                If sum >= canT[so] then 
                  begin 
                    s := so; 
                    tri (1); 
                    timso (so+1); 
                  end; 
            c[i] := true; 
          end; 
    End; 
    
    begin 
      clrscr; 
      write ('N = '); readln (n); 
      write ('M = '); readln (m); 
      fillchar (c,sizeof (c),true); 
      fillchar (a,sizeof (a),0); 
      fillchar (b,sizeof (b),0); 
      fillchar (cant,sizeof (cant),0); 
      fillchar (canf,sizeof (canf),0); 
      cant[1] := m; 
      s := 1; 
      dem := 0; 
      tri (1); 
      cant[0] := m; 
      timso (1); 
      writeln (dem); 
      readln; 
    end.  
    
    Pro chưa? Chương trình chạy đúng đó, nhưng đợi lâu rõ chán.
     
  12. cuong276

    cuong276 Guest

    Tui chém code mệt rồi, đao mòn rồi, cần có thời gian mài lại đã. Bây giờ đến mọi người chém đi. Đề chém nè
    Nối điểm đen trắng
    Trên trục số thực cho n điểm đen và n điểm trắng hoàn toàn phân biệt. Các điểm đen có toạ độ nguyên a1, a2, ..., an còn các điểm trắng có toạ độ nguyên b1, b2, ..., bn. Người ta muốn chọn ra k điểm đen và k điểm trắng để nối mỗi một điểm đen với một điểm trắng sao cho k đoạn thẳng tạo được đôi một không có điểm chung.
    Yêu cầu: Cho toạ độ của n điểm đen a1, a2, ..., an và toạ độ của n điểm trắng b1, b2, ..., bn, hãy tìm giá trị k lớn nhất thoả mãn yêu cầu nêu trên.
    Dữ liệu: Vào từ file văn bản BWPOINTS.INP:
    • Dòng thứ nhất chứa số nguyên dương n (n ≤ 105);
    • Dòng thứ hai chứa các số a1, a2, ..., an (|ai| ≤ 109, i = 1, 2, ..., n);
    • Dòng thứ ba chứa các số b1, b2, ..., bn (|bi| ≤ 109, i = 1, 2, ..., n).
    Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.
    Kết quả: Ghi ra file văn bản BWPOINTS.OUT một số nguyên duy nhất là số k lớn nhất tìm được.
    Ví dụ:
    BWPOINTS.INP
    BWPOINTS.OUT
    3
    0 3 1
    -3 5 -1
    2
    Ràng buộc: 50% số tests ứng với 50% số điểm của bài có 1 ≤ n ≤ 100.
     
  13. mikelhpdatke

    mikelhpdatke Guest

    Ầy, chơi quay lui ko ăn được tét lớn là phải :))
    Phải dùng QHĐ
    F[i,j] là số cách chọn nhiều nhất với j=m vật, i là số quả cân.
    Cơ sở QHĐ
    F[i,0]:=1;
    F[0,j]:=0;
    F[i,j]:=F[i-1,j]+F[i-1,j+i]+F[i-1,abs(i-j)];
     
  14. cuong276

    cuong276 Guest

    Quay lui tớ chưa học, QHĐ cũng chưa học. Bài đó tớ chép code trên mạng. Pro chưa. Họ làm chứ tớ có hiểu cái gì đâu. Cứ chép nhào đấy chứ. hì hì. Còn bài tớ ra thì sao? Chém thử xem.
     
  15. mikelhpdatke

    mikelhpdatke Guest

    Ủa, tọa độ thì tưởng phải có 2 số để xác định trục tung hoành nữa chứ nhể :-?
     
  16. cuong276

    cuong276 Guest

    Ai biết? Đề họ viết thế chứ. Hiểu sao làm nấy. Chém đi nha, chém khi nào mòn đao mới thôi. Cố lên
     
  17. mikelhpdatke

    mikelhpdatke Guest

    ax, thế cuong làm được chưa, đọc khó hiểu thế ............... :|
     
  18. cuong276

    cuong276 Guest

    Tớ ra đề cho cậu mọi người chém mà. Đao của tớ cùn rồi, mài cái đã. Bài này khá khó đó. Bài trích trong đề thi cấp quốc gia năm 2010-2011 đó.
     
  19. 11thanhkhoeo

    11thanhkhoeo Guest

    Mã:
    const inp='cuong.inp';
          outp='cuong.out';
    var i,k,j,n:integer;
       fi,fo:text;
       tg,dem:integer;
       a,b,c:array[1..200] of  integer;
    procedure   nhap;
        begin
            assign(fi,inp);
            reset(fi);
               read(fi,n );
               for i:=1 to n do
                begin
                  read(fi,a[i]);
                  c[i]:=a[i];
                end;
                j:=i;
               for i:=1 to n do
                 begin
                   read(fi,b[i]);
                   c[i+j]:=b[i]   ;
                 end;
            close(fi);
                 assign(fo,outp);
         rewrite(fo);
    
        end;
    
    function kiemtra(x:integer):boolean;
    var
       kt1,kt2,kt3,kt4:boolean;
    
      begin
         kt1:=false;
         kt2:=false;
         kt3:=false;
         kt4:=false;
         for i:=1 to n do
           begin
             if c[x]=b[i] then kt1:=true else kt3:=true;
             if c[x+1]=a[i] then kt2:=true else kt4:=true;
           end;
        if (kt1 and kt2) or (kt3 and kt4) then
        kiemtra:=true;
      end;
    procedure sapsep;
       begin
          for i:=1 to 2*n do
             for j:=1 to i do
               if c[i]> c[j] then
                  begin
                     tg:=c[i];
                     c[i]:=c[j];
                     c[j]:=tg;
                  end;
       end;
    procedure xuli;
      begin
         sapsep;
          while k< 2*n-1 do
            if kiemtra(k) then 
                begin   
                    inc(dem);
                    inc(k,2);
                 end else
                      inc(k);
         write(fo,dem);
         close(fo);
      end;
    begin
       nhap;
       xuli;
    end.
    
    
     
    Last edited by a moderator: 25 Tháng sáu 2012
  20. cuong276

    cuong276 Guest

    Anh ơi! Em chưa chạy thử nhưng nhìn qua thì thấy đề ra yêu cầu đọc và ra ở ở tệp BWPOINTS.INP và BWPOINTS.OUT mà.Sao lại chuyển thành cuong.inp và cuong.out vậy hả trời?
     
Chú ý: Trả lời bài viết tuân thủ NỘI QUY. Xin cảm ơn!

Draft saved Draft deleted

CHIA SẺ TRANG NÀY