[Tin hay] Tin học trẻ

D

duynhan1

Ai có đề thi tin học trẻ tỉnh/tp không? Post lên cho mọi người làm với!

3 Đề tin học trẻ THCS tỉnh Quảng Nam :
- Nhập vào bảng số nguyên A (nxn), sắp xếp và in ra dãy A tăng dần theo hình Zichzac
1|2|3
6|5|4
7|8|9
- Nhập vào bảng số nguyên A (nxn), sắp xếp và in ra dãy A tăng dần theo hình Xoắn ốc
1|2|3
8|9|4
7|6|5

- Biết ngày 14/4/2011 là thứ 5. Viết chương trình nhập vào ngày, tháng, năm. Sau đó xuất ra màn hình đó là ngày thứ mấy trong tuần. ( biết năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 400)
 
D

duyentinhtaysuong

Tính tổng các số ngyên tố của ma trận A[i,j]

F(x) là hàm cho số lượng lớn nhất các số nguyên tố mà tổng của chúng bằng x (trong đó có nhiều nhất 1 số nguyên tố được sử dụng 2 lần, các số nguyên tố còn lại chỉ được sử dụng 1 lần)
Lưu ý; số 1 không phải là số nguyên tố.Quy ước f(1)=1
VD:
x=5 → f(x)=2 vì 5=3+2
x=9 → f(x)=3 vì 9=5+2+2
x=10 → f(x)=3 vì 10=5+3+2
Yêu cầu:
Cho 1 bảng số nguyên dương A kích thước NxN(N40), A[I,j]100.Thay mỗi phần tử A[i,j] cảu bảng bằng giá trị f(A[i,j]), sau đó tính tổng f(A[i,j])
Dữ liệu: Cho trong tập tin văn bản BAI3.INP gồm N+1 dòng
Dòng 1 chứa số nguyên dương N
N dòng tiếp theo, mỗi dòng gồm N số A[i,1], A[i,2], … A[i,N] với 1iN
Lưu ý : Các số trên cùng một dòng ghi cách nhau ít nhất 1 dấu cách
Kết quả: Ghi ra file BAI3.OUT gồm 1 con số duy nhất là tổng của các f(A[i,j])
VD:


BAI3.INP
4
1 2 44 11
14 34 16 9
19 22 5 24
4 43 3 15

F:
1 1 7 3
6 4 4 3
5 5 2 5
2 7 1 4

Tong :

BAI3.OUT

60
 
V

vanhaipro

- Biết ngày 14/4/2011 là thứ 5. Viết chương trình nhập vào ngày, tháng, năm. Sau đó xuất ra màn hình đó là ngày thứ mấy trong tuần. ( biết năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 400)
bài này có công thức trong sách của TS.Quách tuấn Ngọc đó
 
A

auauau97

Mình có đề thi tin học trẻ THCS quận Cầu Giấy năm 2010-2011 đó, mình vừa đi thi về xong,bạn lấy không ?
Bài 1:
(Bài này mình làm hết, khá dễ)
Nhập mảng 1 chiều.
In ra các số nguyên tố của mảng
Sắp xếp mảng giảm dần(hay tăng dần gì đó không nhớ).
Tính USCLN của mảng
Đề BÀI 1 còn 1 câu nữa nhưng mình không nhớ, câu đó cơ bản lắm, hình như là in ra mảng hay sao ấy.
Bài 2
(Bài này khá khó , mì chỉ làm được câu đầu mình nghĩ đây là bài khó nhất trong đề)
Nhập 1 xâu từ bàn phím.
a)In ra màn hình các từ cuả xâu(VD như xâu:turbo pascal thì có 2 từ là turbo và pascal)
b)Đếm các từ đối xứng của xâu(các từ đã in ra ở trên)
Bài 3:
(Bài nay bình thường thôi)
Nhập ma trận vuông có cạnh là số lẻ.
Ghi ma trận ra tệp MAPHUONG.OUT
 
Last edited by a moderator:
A

auauau97

3 Đề tin học trẻ THCS tỉnh Quảng Nam :
- Nhập vào bảng số nguyên A (nxn), sắp xếp và in ra dãy A tăng dần theo hình Zichzac
1|2|3
6|5|4
7|8|9
- Nhập vào bảng số nguyên A (nxn), sắp xếp và in ra dãy A tăng dần theo hình Xoắn ốc
1|2|3
8|9|4
7|6|5

- Biết ngày 14/4/2011 là thứ 5. Viết chương trình nhập vào ngày, tháng, năm. Sau đó xuất ra màn hình đó là ngày thứ mấy trong tuần. ( biết năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 400)

Bạn post lời giải lên cho mọi người đi.
Bài khá khó đấy.
 
B

bachoc9x

3 Đề tin học trẻ THCS tỉnh Quảng Nam :
- Nhập vào bảng số nguyên A (nxn), sắp xếp và in ra dãy A tăng dần theo hình Zichzac
1 2 3
6 5 4
7 8 9

Tớ làm dc bài này nè:

Ý tưởng: Sắp xếp cả mảng bình thường rồi đến hàng chẵn thì đổi ngược lại (hơi lâu nhưng dễ)

Code:
PHP:
Var f,f1:text;
    A:array[1..10,1..10] of word;
    B:array[1..100] of word;
    m,n:word;

Procedure Nhap;
 Var  i,j:word;
 Begin
  Assign(f,'inp.dat');reset(f);
  Read(f,m,n);
  For i:=1 to m do
   For j:=1 to n do
    Read(f,a[i,j]);
 End;


Procedure doicho(var a,b:word);
 Var tg:word;
 Begin
   tg:=a;
   a:=b;
   b:=tg;
 End;


Procedure Sapxep;
 Var l,i,j:word;
 Begin
  l:=0;
  For i:=1 to m do
   For j:=1 to n do
     Begin
       inc(l);
       B[l]:=A[i,j];
     End;
  For i:=1 to m*n-1 do
   For j:=i+1 to  m*n do
    If b[i]>b[j] then
      doicho(b[i],b[j]);
  l:=0;
  For i:=1 to m do
   For j:=1 to n do
     Begin
       inc(l);
       A[i,j]:=B[l];
     End;
 End;

Procedure Xuli;
 Var i,j,k,q:word;
 Begin
  For i:=1 to m do
   For j:=1 to n do
    If i mod 2=0 then
      For k:=1 to n-1 do
        For q:=k+1 to n do
          If A[i,k]<A[i,q] then
            doicho(a[i,k],a[i,q]);
  End;

Procedure Xuat;
 var i,j:word;
 Begin
  Assign(f1,'out.dat');rewrite(f1);
  For i:=1 to m do
   Begin
    For j:=1 to n do
        write(f1,a[i,j],' ');
    writeln(f1);
   End;
  Close(f1);
  readln;
 End;

BEGIN
 Nhap;
 Sapxep;
 Xuli;
 Xuat;
End.

Bạn nào chỉ tớ cách sắp xếp mảng 2 chiều mà ko cần đưa về mảng 1 chiều ko? Thanks nhiều
 
Last edited by a moderator:
A

auauau97

Mình làm thế này, không biết có đúng không ?


Phần nhập bạn tự làm nhé,
Phần sắp xếp:
For i:=1 to n do
For j:=1 to m-1 do
For k:=j+1 to m do
If a[i,j]>a[i,k] then
Begin
A[i,j]:=a[i,j]+a[i,k];
A[i,k]:=a[i,j]-a[i,k];
A[i,j]:=a[i,j]-a[i,k];
End;
Writeln('Ma tran sap xep tang dan theo hang:');
For i:=1 to n do
Begin
For j:=1 to m do
Write(a[i,j]:3);
Writeln;
Writeln;
End;
Readln;
End.
 
N

nvtan256

TIN HỌC TRẺ TỈNH THANH HÓA

Trong lĩnh vực nhận dạng giọng nói, các nhà khoa học thường phải đối sánh 2 tín hiệu giọng nói một chiều theo thời gian để ước lượng một độ đo về sự khác nhau giữa 2 tín hiệu. Dựa trên độ đo này sẽ đưa ra một quyết định về tính hợp lệ của chúng ( hai tính hiệu giọng nói thuộc về một đối tượng hay 2 đối tượng khác nhau ) bằng cách so sánh nó với 1 giá trị ngưỡng.

Gọi S và T là hai tín hiệu giọng nói 1 chiều theo thời gina ( đã được số hóa vào máy tính ) có độ dài tương ứng là m và n, trong đó S và T[j] tương ứng là các giá trị của 2 tín hiệu tại các thời điểm i và j (0<=i<m,0<=j<n).

Gọi L={(i0,j0),(i1,j1)......(iK,jK)} là chuỗi các đối sánh giữa hai tín hiệu S và T, trong đó mỗi cặp số (ik,jk) biểu diễn 1 đối sánh đơn giữa điểm ik thuộc S và jk thuộc T (0<=k<=K). L được gọi là chuỗi các đối sánh hợp lệ nếu L thỏa mãn đồng thời các rằng buộc sau :

-- Mỗi điểm trên tín hiệu S được đối sánh với ít nhất 1 điểm trên tín hiệu T và ngược lại.

-- Gọi (ik,jk) là một đối sánh đơn nào đó của L, độ lệch vị trí giữa i và j không được quá 1 đoạn có độ dài w, nói cách khác abs(ik-jk) <=w

-- Các đối sánh đơn của L phải thỏa mãn tính chất đơn điệu tăng theo thời gian. Cụ thể :

0<=ik-i(k-1)<=1; j tương tự

Với mỗi đối sánh đơn (ik,jk) của L, sự khác nhau về giá trị giữa điểm ik trên tín hiệu S và điểm jk trên tín hiệu T được tính bởi :

d(ik,jk)=(s[ik]-T[jk])^2



Khi đó, độ đo sự sai giữa 2 tín hiệu S và T được tính như sau

D(S,t)={d(i0,j0)+d(i1,j1)+.....d(iK,jK)}*1/(K+1)



Yêu cầu : cho trước hai tín hiệu S và T, hãy tìm chuỗi các đối sánh tối ưu L sao cho cực tiểu hóa độ đo sự sai khác giữa S và T.



Input :

- Dòng đầu là 3 số nguyên dương m,n,w (0<m,n <3000) và 0<w<1000. Các số được phân tách nhau bởi 1 dấu ','.

- Dòng thứ 2 chứa m số nguyên dương biểu diễn tín hiệu S, các số được phân tách nhau bởi 1 dấu ','.

- Dòng thứ 3 chứa n số nguyên dương biểu diễn tín hiệu T, các số được phân tách nhau bởi 1 dấu ','



OUTPUT

- Dòng đầu ghi số nguyên dương K là số các đối sánh đơn tối ưu L tìm được.

- Dòng thứ 2 ghi chuỗi các đối sánh tối ưu tìm được như sau i0,j0,i1,j1...iK,jK. Trong đó mỗi cặp (ik,jk) là một đối sánh đơn tìm được với ik thuộc S và jk thuộc T. (i0,j0)=(0,0) và (iK,jK)=(m-1,n-1);

- Ghi ra D(S,T) chính xác tới 6 chữ số thập phân.

Chú ý : Không cần xử lý số lớn.

VD

INPUT

14,9,5

5,7,4,3,2,5,6,7,9,11,14,21,12,15

3,5,3,5,4,6,7,4,8

OUTPUT

15

0,0,1,1,2,2,3,2,4,3,5,3,6,4,6,5,7,6,8,7,9,7,10,7,11,7,12,7,13,8

21.250000
 
O

o0_zz_0o

Nhập vào bảng số nguyên A (nxm), sắp xếp và in ra dãy A tăng dần theo hình Xoắn ốc
1 2 3 4
10 11 12 5
9 8 7 6


PHP:
  begin
     assign(f,'so.inp');
     assign(f1,'so.out');
     reset(f);
     readln(f,n,m);
     rewrite(f1);
      cot:=m;
     dong:=n;
     so:=n*m;
     i:=1;
     j:=1;
     dem:=1;
     k:=0;
     repeat

           while (k<so) and ( j< cot) do
                 begin
                      j:= j+1;
                      k:= k+1;
                      a[i,j]:= k;
                 end;
           while (k<so) and ( i< dong) do
                 begin
                      i:= i+1;
                      k:=k+1;
                      a[i,j]:= k;
                 end;
           while (k<so) and ( j > dem) do
                 begin
                      j:= j-1;
                      k:= k+1;
                      a[i,j]:= k;
                 end;
           while (k<so) and ( i > dem+1) do
                 begin
                      i:= i-1;
                      k:= k+1;
                      a[i,j]:= k;
                 end;
     dong:=dong-1;
     cot:=cot-1;
     dem:=dem+1;

     until so=k;

     for i:=1 to n do
         begin
              for j:=1 to m do
                  write(f1,a[i,j]:4);
                  writeln(f1);
close(f);
close(f1);
mọi người giúp em chuẩn bài này sang sử dụng toàn bộ hàm for được không ?
 
Top Bottom