Mình mới lấy đề thi tin Đồng Nai năm nay về cho 4rum nè. Không Khó như những năm trước
Bài 1: Số không tận cùng Cho N là một số nguyên dương không vượt quá 10^9 được nhập từ bàn phím. Hãy viết chương trình tìm và xuất ra màn hình số chữ số 0 tận cùng của N!. Chương trình được lưu với tên SOKHONG.PAS
Ví dụ: N=5 Số chữ số 0 tận cùng của 5! là: 1
Bài 2: Xâu đảo ngược Một xâu kí tự bất kì được gọi là xâu đảo ngược của xâu S nếu nó được tạo thành sau khi đảo ngược thứ tự các từ trong một xâu ký tự S cho trước. Ví dụ: Xâu Nguyen Van An sau khi đảo ngược sẽ thành An Van Nguyen.
Yêu cầu: Viết chương trình tìm xâu đảo ngược của một xâu S cho trước. Chương trình được lưu với tên XAUNGUOC.PAS
Dữ liệu: Đọc từ file XAUNGUOC.INP gồm xâu kí tự S Kết quả: Ghi ra file XAUNGUOC.OUT gồm xâu kết quả sau khi đảo ngược xâu S. Ví dụ:
XAUNGUOC.INP Nguyen Van An XAUNGUOC.OUT An Van Nguyen
Bài 3: Vòng tròn nguyên tố Một vòng tròn chứa 2n vòng tròn nhỏ. Các vòng tròn nhỏ được đánh số từ 1 đến n theo chiều kim đồng hồ. Cần điền một số tự nhiên từ 1 đến 2n vào mỗi vòng tròn nhỏ (mỗi số chỉ được phép điền một lần) sao cho tổng của hai số trên hai vòng tròn nhỏ liên tiếp là số nguyên tố. (Quy ước: Số điền ở vòng tròn nhỏ 1 luôn là số 1). 1 6 4
5 3 2
Dữ liệu: Đọc từ file VONGTRON.INP gồm số nguyên dương N (1Kết quả: Ghi ra file VONGTRON.OUT gồm số lượng các cách điền số tìm được. Ví dụ: VONGTRON.INP 3 VONGTRON.OUT 2 |
theo mình phân tích bài 1,2 là 2 bài học sinh bình thường có thể giải được với những thuật toán cơ bản
bài 3 cần có tưduy logic.
sau đây mình sẽ phân tích bài 1 và 2 ( đủ lấy giải rồi ^^)
Bài 1:
các bạn có thể tham khảo đề thi olimpic Iẻland mình vừa post
=ở đây ý tường khá táo bạo mình nghĩ ra đó là dùng 2 mảng 1 chiều độ dài 10000 ( Không tràn số)
-tính chất của n! là = n*(n-1)*(n-2)*...*1
vậy lợi dụng thuật toán nhân (x) cơ bản mà các giáo viên cấp 1 dày công dạy ta. mình sẽ dùng cách này giải bài.
có phải 1x2=2; 2x3=6;.....
nhớ hồi lớp 3 các cô dạy mình nhân theo hàng dọc. lấy hàng này nhân lần lượt với hàng kia ( mang mán là thế) rồi nhớ cộng dồn
cách này là cách nhân cơ bản nhất:
- Code:
-
10
x 6
-------
60
các bạn nhớ rồi chứ
vậy ý tưởng là nhân như vậy nhưng nhân ngược.
1. mảng 1: 1
2. mảng 2: 2
3. mang 1: 6
4. mảng 2: 42
5. mảng 1: 021
.......
7.mảng 2:0405
như vậy chỉ việc đọc các số 0 ở vị trí đầu.
code các bạn tự viết.
Bài 2:
* cái này là đọc xâu ngược
* có rất nhiều ý tưởng cho bài này. đây là 1 trong số đó:
* tạo 1 xâu SS là xâu phụ tác dụng là xâu ngược của xâu S ban đầu ví dụ S='Long'; SS='gnoL'
* dùng hàm Pos() đề lấy khoảng trắng đầu tiên trong xâu SS rồi từ vị trí đó đọc ngược lại SS[1] và gán các kí tự vừa đọc cho SSS
sau đó xoá Pos() ký tự từ vị trí SS[1] lặp lại bước tìm khonag3 trắng
Bài 3: Bó Tay Xin Ý kiến các lão thành trong 4rum