Bài giải tham khảo Đề thi Tin học trẻ tỉnh Lâm Đồng năm 2018 ■ Bài giải tham khảo Đề thi Tin học trẻ tỉnh Bắc Giang năm 2019 ■ Bài giải tham khảo Đề thi Tin học trẻ tỉnh Ninh Bình 2019 ■ Bài giải tham khảo Đề thi Tin học trẻ tỉnh Lâm Đồng năm 2019 ■ Bài giải tham khảo Đề thi Tin học trẻ huyện Vũ Quang năm 2019■ Bài giải tham khảo Đề thi Tin học trẻ tỉnh Gia Lai năm 2019
BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Đề thi Tin học trẻ tỉnh Lâm Đồng năm 2018 Khối Trung học Cơ sở Thời gian làm bài: 150 phút Hướng giải quyết: - Dùng kỹ thuật tách số: Muốn tách số 234 thành số 2, thực sau: 234 mod 10 (phép chia lấy số dư, 234 / 10 =23 dư 4) = 234 div 10 (phép chia bỏ số lẻ: 234 / 10 =23.4, bỏ số lẻ thành 23) = 23 Thực tiếp tục thao tác thu thêm số số - Sau tính tổng bình phương chữ số 234 (22 + 32 + 42 = + + 16 = 29) = 29, ta xét số 29 số nguyên tố 234 “số đẹp” - Tạo hàm xét số k có phải “số đẹp” hay không dựa theo kỹ thuật tách số - Tạo hàm xét số k có phải số nguyên tố hay không: Nếu k < => không số nguyên tố Nếu k >= : Chia số k cho i với i lấy giá trị từ đến số k cắt bỏ số lẻ TD: số 11 chia thử không chia hết => 11 số nguyên tố Trang Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập - Tạo biến số so xuất phát từ 11 (so chọn giá trị TK[5-1]=TK[4]=38.890 Từ 9999 có TK[4] = 38.890 chữ số Từ 10.000 đến 23.456 có (23.456-10000+1=13.457) số, số có chữ số => có 13.457x5=67.285 chữ số Vậy từ 23.456 có (38.890+67.285=106.175) chữ số Từ 23.456 có (106.175-1=106.174) chữ số Lập trình theo cách thứ hai sau: Var n, i: LongInt; TK: Array [1 10] of QWord; LT10, Dem: QWord; Begin Trang 27 Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Assign(Input, 'DDDS.INP'); Reset(Input); ReadLn(n); Close(Input); TK[1]:=10; LT10:=10; // Tạo mảng thống kê TK For i:=2 to 10 Begin TK[i]:=((LT10*10-1)-LT10+1)*i + TK[i-1]; LT10:=LT10*10; End; i:=1; LT10:=10; // Tìm đoạn xem n nằm đoạn 9, 0.99, While n>LT10-1 Begin LT10:=LT10*10; Inc(i); End; Dec(i); LT10:=LT10 div 10; Assign(Output, 'DDDS.OUT'); ReWrite(Output); Dem:=(n-LT10+1)*(i+1)+TK[i]; WriteLn(Dem-1); Close(Output); End Trang 28 Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Hướng giải quyết: - So sánh: a[1] với a[2], a[3], … a[n] a[2] với a[3], a[4], … a[n] a[i] với a[i+1], a[i+2], … a[n] a[n-1] với a[n] - Dùng vòng For: Biến Boolean DonNhat=True (Đơn nhất) For i:=1 to n-1 For j:=i+1 to n Nếu a[i]=a[j] DonNhat=False vòng For Nếu DonNhat xuất số 1, ngược lại xuất số Lập trình sau: Var n, i, j: Integer; a: Array [1 1000] of LongInt; DonNhat: Boolean; Begin Assign(Input, 'DONNHAT.INP'); Reset(Input); ReadLn(n); For i:=1 to n Read(a[i]); Close(Input); DonNhat:=True; For i:=1 to n-1 For j:=i+1 to n If a[i]=a[j] then Begin DonNhat:=False; Break; End; Assign(Output, 'DONNHAT.OUT'); ReWrite(Output); If DonNhat then Write(1) else Write(0); Close(Output); End Trang 29 Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Đề thi Tin học trẻ tỉnh Gia Lai năm 2019 Khối Trung học Cơ sở Thời gian làm bài: 150 phút Hướng giải quyết: - Có thể nhập số n từ bàn phím đề thi khơng nói đến file Input Output - Thay nhập biến n số, nhập biến n chuổi (string) để dễ xử lý nhập số có giá trị lớn - Dùng vòng For i:=1 to Length(n) downto để in số đảo ngược số n Lập trình sau: Var n: String; i: Integer; Begin WriteLn('Ban hay nhap so n'); ReadLn(n); // Đọc số n theo dạng chuổi (String) để dễ xử lý For i:=Length(n) downto Write(n[i]); End Trang 30 Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Hướng giải quyết: - Nhập chuổi Ch=‟12/15‟ - Dùng hàm Pos để tìm vị trí vt „/‟ (vt=3) - Tử số chuổi từ vị trí đến vt-1 (1 đến 2) - Mẫu số chuổi từ vị trí đến vt+1 đến cuối (4 đến 5) - Đổi tử số mẫu số sang dạng số hàm Val(chuỗi, số, lỗi) - Tìm ước số chung lớn (UC) tử số mẫu số (=3) (bạn tham khảo trang 14 15) - Chia tử số mẫu số cho UC - Xuất kết (tử số, „/‟, mẫu số) Lập trình sau: Var PhanSo, TuSo, MauSo: String; TS, MS, UC: LongInt; VT, Loi: Integer; { } Function UCLN(a, b: LongInt): LongInt; Begin While (a mod b0) and (b mod a0) Begin If a>b then a:=a mod b; If (a mod b=0) or (b mod a=0) then Break; If b>a then b:=b mod a; End; If a=b then Exit(a); If a>b then Exit(b) else Exit(a); End; {====================================================================} Begin WriteLn('Ban hay nhap phan so'); ReadLn(PhanSo); VT:=Pos('/', PhanSo); TuSo:=Copy(PhanSo, 1, VT-1); MauSo:=Copy(PhanSo, VT+1, Length(PhanSo)-VT); Val(TuSo, TS, Loi); Val(MauSo, MS, Loi); UC:=UCLN(TS, MS); TS:=TS div UC; Trang 31 Biên soạn: Th.S Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập MS:=MS div UC; WriteLn(TS, '/', MS); End Hướng giải quyết: - Xuất phát với biến i=1; độ dài L chuổi (1234…) tổng (Tong)=1 - Cho i tăng (-> 2, 3, 4…), biến i thành chuổi Dùng hàm Val để đổi chữ số i thành số cộng vào biến tổng, tăng giá trị L lên - Khi L=n số chữ số cần tính tổng ngưng Lập trình sau: Var So, Loi, n, i, j, L, Luu_i: LongInt; Tong: QWord; Ch: String; Begin WriteLn('Nhap so n'); ReadLn(n); i:=1; L:=1; Tong:=1; While L1 Dem _2> 1 Nếu Dem_1=Dem _2 xuất k1+k2,... Nguyễn Anh Việt BÀI GIẢI ĐỀ THI TIN HỌC TRẺ CÁC TỈNH, QUẬN, HUYỆN, THỊ XÃ – Tập Đề thi Tin học trẻ tỉnh Lâm Đồng năm 20 19 Khối Trung học Cơ sở Thời gian làm bài: 150 phút Hướng giải quyết: Thay