Đề thi Vòng khu vực miền bắc tin học trẻ toàn quốc năm 2022 – Bảng A tiểu học

Đề thi Vòng khu vực miền bắc tin học trẻ toàn quốc năm 2022 – Bảng A tiểu học

Đề thi

Hãy sử dụng ngôn ngữ lập trình scratch hoặc python để viết chuong trình giải các bài toán sau:

Bài 1. Vẽ hình vuông ( 100 điểm)

Hình vuông cơ sở là hình bậc 1 trong hình dưới đây: gồm $3 \times 3$ ô vuông nhỏ kích thước cạnh bằng 20 , và có 5 ô được tô màu (ô ở tâm và 4 ô ở góc).

Yêu cầu: Nhập vào số $N$ và đưa ra theo yêu cầu sau:

– Nếu $1 \leq N \leq 4$ thì vẽ hình bậc $N$, tương ứng như hình trên.

– Nếu $5 \leq N \leq 100$ thì không cần vẽ hình, mà chỉ cần đưa ra số lương hình vuông cần tô màu trong hình bậc $N$. Với hình bậc $1(N=1)$ có 5 ô cần tô màu, hình bậc 2 có 21 ô cần tô màu.

Chú ý:

– Tô màu có dạng giống hình vẽ, có thể thay màu khác.

– Không sử dụng nhân vật giống hình vẽ.

Ví dụ:

Chấm điểm:

– Bài vẽ hình: hệ thống sẽ luu bài nộp cuối cùng và sẽ chấm điểm sau khi kì thi kết thúc.

– In ra được hình bậc $1,2,3,4(1 \leq N \leq 4)$ thí sinh sẽ được 60 điểm (nếu chương trình không tô được màu, chỉ được $50 \%$ số điểm của phần này);

– In ra được kết quả trong trường hợp $5 \leq N \leq 100$ thí sinh sẽ được 40 điểm.

Bài 2. Cạnh hình chữ nhật (100 điểm)

Cho ba số tự nhiên $A, B, C$. Biết rằng 3 số này là độ dài 3 cạnh của 1 hình chữ nhật. Hãy đưa ra độ dài cạnh còn lại của hình chữ nhật đó.

Read:   Đề thi HSG Tin 9 Huyện Châu Thành - Năm học 1718 - Có code tham khảo

Dữ liệu: Nhập vào ba dòng tương ứng là ba số tự nhiên $A, B, C .(0<A, B, C \leq 1000)$.

Kết quả: Ghi ra một số duy nhất là kết quả của bài toán.

Dữ liệu nhập vào đảm bảo bài toán luôn có kết quả.

Ví dụ:

Dữ liệu Kết quả Giải thích
3

3

4

4 Với  A = 3,B = 3 và  C = 4 thì ta thấy  A và  B là cạnh đối nhau có cùng chiều dài nên cạnh còn lại phải có   cùng chiều dài với  C.   Vì vậy cần đưa ra đáp án là  4.

Bài 3. Tom và Jerry

Trong nhà mèo Tôm ban đầu có $N$ hạt thóc. Vụ mùa đến, mèo Tôm dành một ngày đi thu hoạch thóc mang về nhà rồi ngày hôm sau sang nhà chó Spike chơi, mèo Tôm cứ lặp đi lặp lại các ngày như vậy. Chuột Jerry biết được lịch trình của mèo Tôm nên cứ đến ngày mèo Tôm sang nhà chó Spike chơi thì chuột Jerry sang nhà mèo Tôm lấy đi một nửa số thóc mà ngày hôm trước mèo Tôm thu hoạch được (nếu số thóc mèo Tôm thu hoạch là số lẻ – giả sử là $X$ thì số thóc chuột Jerry lấy là một nửa của $(X-1))$.

Biết rằng, mèo Tôm lần đầu tiên sẽ thu hoạch được $K$ hạt thóc, và mỗi lần thu hoạch sau đó sẽ bị giảm 1 hạt thóc (lần thứ hai thu hoạch $K-1$ hạt thóc, lần thứ ba thu hoạch $K-2$ hạt thóc,…) và đến khi thu hoạch được 1 hạt thóc thì sẽ không bị giảm nữa.

Mèo Tôm là một con mèo rất kém tính toán, mèo Tôm muốn biết sau ít nhất bao nhiêu ngày thì trong nhà mèo Tôm có tối thiểu $\mathrm{M}$ hạt thóc. Em hãy lập trình để tính toán giúp mèo Tôm.

Yêu cầu: Cho ba số tự nhiên $N, M$ và $K$. Hỏi thời điểm đầu tiên mà ở trong nhà mèo Tôm có tối thiểu $M$ hạt thóc.

Dữ liệu: Nhập vào ba dòng tương ứng là ba số tự nhiên $N, M$ và $K\left(1 \leq N, M, K \leq 10^{9} ; M>N\right)$. Kết quả: Ghi ra một số là kết quả của bài toán.

Ví dụ:

Dữ liệu Kết quả Giải thích
6

22

10

5  Ngày đầu tiên mèo Tôm mang về  10 hạt thóc  → có  10+6=16 hạt thóc.

Ngày thứ  2,chuột Jerry lấy  5 hạt thóc  → còn  16-5=11 hạt thóc.

Ngày thứ  3,mèo Tôm mang về  9 hạt thóc  → có  20 hạt thóc.

Ngày thứ  4,chuột Jerry lấy  4 hạt thóc  → có  16 hạt thóc.

Ngày thứ  5,mèo Tôm mang về  8 hạt thóc  → có  24 hạt thóc.

Vậy ngày thứ  5 trong nhà mèo Tôm đã có tối thiểu  22 hạt thóc.

 

5

8

2

5 Ngày đầu tiên mèo Tôm mang về  2 hạt thóc  → có  5+2=7 hạt thóc.

Ngày thứ  2,chuột Jerry lấy  1 hạt thóc  → còn  7-1=6 hạt thóc.

Ngày thứ  3,mèo Tôm mang về  1 hạt thóc  → có  7 hạt thóc.

Ngày thứ  4,chuột Jerry lấy  0 hạt thóc  → có  7 hạt thóc.

Ngày thứ  5,mèo Tôm mang về  1 hạt thóc  → có  8 hạt thóc.

Vậy ngày thứ  5 trong nhà mèo Tôm đã có tối thiểu  8 hạt thóc

Chấm điểm:

– Nếu chương trình chạy đúng những trường hợp $N, M, K \leq 10^{4}$, thí sinh sẽ được 60 điểm;

– Nếu chương trình chạy đúng những trường hợp $N, M, K \leq 10^{9}$, thí sinh sẽ được 100 điểm.

Bài 4. Đổi chỗ chữ số

Cho một số tự nhiên $N$. Có thể đổi vị trí của 2 chữ số (không giới hạn số lần đổi) tuy nhiên không được để tồn tại chữ số 0 ở vị trí đầu tiên. Hãy đưa ra số đối xứng nhỏ nhất có thể tạo thành từ số $N$. Nếu không tồn tại số đối xứng nào thì đưa ra 0 .Dữ liệu: Nhập vào một số tự nhiên $N\left(0 \leq N \leq 10^{15}\right)$.Kết quả: Ghi ra một số là kết quả của bài toán.

Ví dụ:

Dữ liệu Kết quả Giải thích
311 131 Đổi chỗ chữ số  3 và chứ số  1 đầu tiên sẽ được kết quả là  số đối xứng và nhỏ nhất. Đáp án cần đưa ra là  131
26622 26262 Có nhiều cách đổi để tạo ra số đối xứng như: 26262,  62226 nhưng số 26262 là nhỏ nhất.
1213 0 Không tồn tại cách đổi chỗ để tạo ra số đối xứng.

Chấm điểm:

– Có 30 điểm tương ứng với điều kiện: $N$ có tối đa 2 chữ số khác nhau;

– Có 20 điểm tương ứng với điều kiện: $N$ có 3 chữ số khác nhau.

Code Python tham khảo

Bài 1. Vẽ hình vuông

Code tham khảo sử dụng thư viên đồ họa “rùa” trong python để vẽ










from turtle import * color("blue"); speed(0) 
def board(x, y): 
for i in range(3): 
for j in range(3): pu(); 
goto(x + i * 20, y + j * 20); pd() 
if (i + j) % 2 == 0: begin_fill() 
for _ in range(4): fd(20); rt(90) 
if (i + j) % 2 == 0: end_fill() n = int(input()) 
if n < 5: board(0, 0) 
for l in range(1, n): board(-40 * l, 40 * l) board(40 * l, 40 * l) board(40 * l, -40 * l) board(-40 * l, -40 * l) 
else: print(5 + 4 * 4 * (n-1))

 

Bài 2. Cạnh hình chữ nhật



a = int(input()) 
b = int(input()) 
c = int(input()) 
print(a ^ b ^ c)

Bài 3.TOM VÀ JERRY








n = int(input()) 
m = int(input()) 
k = int(input()) 
days = 0 
while n < m and k > 1: 
 if days % 2 == 0: n += k 
 else: n -= k // 2 k -= 1 days += 1 
if k == 1: days += (m-n) * 2 - 1 
print(days)

 

Bài 4. Đổi chỗ chữ số






s = input() 
d = [0] 
 * 10 
for v in s: d[int(v)] 

 += 1 odd_count = 0 # số các chữ số có số lượng lẻ odd = -1 # chữ số có số lượng lẻ left = "" # nửa đầu của kết quả 
for i in range(10): 
if d[i]  % 2 == 1: # có lẻ các chữ số i odd_count += 1 odd = i if i != 0: left = left + str(i) * (d[i]  // 2) # nối 1 nửa số lượng chữ số i vào nửa đầu if len(left) > 0 and d[0]  > 0: # nếu có chữ số 0 left += "0" * (d[0] //2) d[0] 
 = 0 if odd_count > 1: 
print(0) else: right = left[::-1]  # nửa sau của kết quả (đảo ngược của nửa đầu) if odd >= 0: res = left + str(odd) + right else: res = left + right if len(res) < len(s): # trường hợp đặc biệt: 100, 10000... res = "0" print(res)

 

Read:   Tổng hợp các ý tưởng làm thiết bị dạy học số
Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *