Đáp án đề thi hsg tỉnh Hải Dương 20222023

10 150 0
Đáp án đề thi hsg tỉnh Hải Dương 20222023

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

Thông tin tài liệu

Page 1 SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG ĐỀ CHÍNH THỨC KỲ THI CHỌN HỌC SINH GIỎI LỚP 12 THPT CẤP TỈNH NĂM HỌC 2022 – 2023 ĐÁP ÁN (Solutions) Đề thi môn TIN HỌC Bài 1 Đo chiều cao Sử dụng hệ thức lượng.

SỞ GIÁO DỤC VÀ ĐÀO TẠO HẢI DƯƠNG KỲ THI CHỌN HỌC SINH GIỎI LỚP 12 THPT CẤP TỈNH NĂM HỌC 2022 – 2023 ĐỀ CHÍNH THỨC ĐÁP ÁN (Solutions) Đề thi môn: TIN HỌC -Bài 1: Đo chiều cao Sử dụng hệ thức lượng tam giác vng ta có cơng thức đáp số là: sin(𝛼) ℎ + 𝑎 × tan(𝛼) = ℎ + 𝑎 × cos(𝛼) Chương trình Pascal: var a, alpha, h: double; BEGIN read(a, alpha, h); alpha:=alpha*pi/180; write(h+a*sin(alpha)/cos(alpha):0:3); END Chương trình C++: #include using namespace std; int main() { double a, alpha, h; cin >> a >> alpha >> h; alpha = alpha * acos(-1) / 180; printf("%.3f", h + a * tan(alpha)); } Chương trình Python import math a = float(input()) alpha = float(input()) h = float(input()) alpha = alpha*math.pi/180 Page print("{:.3f}".format(h + a*math.tan(alpha))) Bài 2: Thi online Sử dụng biến 𝑑 để lưu trữ số lần liên tiếp trước trả lời khởi đầu 𝑑 = Duyệt tất ký tự từ đầu đến cuối dãy: • Nếu ký tự gặp ‘1’: Cộng vào kết 𝑑 + sau tăng 𝑑 • Nếu ký tự gặp ‘0’: Khởi tạo lại 𝑑 = Chương trình Pascal var res: int64; d: longint; ch: char; n, i: longint; BEGIN res:=0; d:=0; readln(n); for i:=1 to n begin read(ch); res:=res + (d+1)*(ord(ch)-48); if ch='1' then inc(d) else d:=0; end; writeln(res); END Chương trình C++ #include using namespace std; int main() { string s; int n; cin >> n; cin >> s; long long ans = 0; int d = 0; for(int i = 0; s[i]; ++i) { ans += (d + 1) * (s[i] - '0'); d = (s[i] - '0') ? d + : 0; } cout ans then ans:=TL+TR; end; writeln(ans); END +) Giải pháp 2: (Full điểm) Chuẩn bị trước mảng 𝑠0 , 𝑠1 , … , 𝑠𝑛 với 𝑠𝑖 = 𝑎1 + 𝑎2 + ⋯ + 𝑎𝑖 = 𝑠𝑖−1 + 𝑎𝑖 Khi 𝑎1 + ⋯ + 𝑎𝑘 = 𝑠𝑘 𝑎𝑛−(𝑚−𝑘)+1 + ⋯ 𝑎𝑛 = 𝑠𝑛 − 𝑠𝑛−(𝑚−𝑘) ta cần vịng lặp Chương trình pascal thực ý tưởng này: var n, m, i: longint; Page a: array[0 1000000] of longint; s: array[0 1000000] of int64; ans, T : int64; k: longint; BEGIN read(n, m); for i:=1 to n read(a[i]); s[0]:=0; for i:=1 to n s[i]:=s[i-1]+a[i]; ans:=0; for k:=0 to m begin T:=s[k]+s[n]-s[n-(m-k)]; if T>ans then ans:=T; end; writeln(ans); END Giải pháp tương tự C++ (full điểm): #include #define maxn 1000001 using namespace std; int a[maxn]; long long s[maxn]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; for(int i=1;i> a[i]; s[0]=0; for(int i=1;i

Ngày đăng: 27/05/2023, 08:26

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

Tài liệu liên quan