Bài giải Đề thi Tin học trẻ THCS các quận,huyện,thị xã ■ Lập trình Free Pascal ■ Tập 2

34 1.5K 21
Bài giải Đề thi Tin học trẻ THCS các quận,huyện,thị xã ■ Lập trình Free Pascal ■ Tập 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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

Ngày đăng: 21/06/2020, 11:33

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan