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

M

mikelhpdatke

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 :(
 
C

cuong276

:)):)):)) 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.
 
M

mikelhpdatke

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?
 
C

cuong276

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.
 
Q

quanghero100

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?
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.
 
C

cuong276

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.

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
 
M

mikelhpdatke

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:
C

cuong276

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%
 
M

mikelhpdatke

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 :))
 
C

cuong276

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.
 
C

cuong276

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.
 
M

mikelhpdatke

Ầ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)];
 
C

cuong276

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.
 
M

mikelhpdatke

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

cuong276

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
 
C

cuong276

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 đó.
 
1

11thanhkhoeo

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:
C

cuong276

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?
 
Top Bottom