Bài toán áp dụng

Một phần của tài liệu Lý do chọn đề tài (Trang 47 - 50)

PHẦN 2 NỘI DUNG NGHIÊN CỨU

4.Bài toán áp dụng

4.1. ƯỚC NGUYÊN TỐ

An nghĩ ra được một bài toán muốn thách thức bạn như sau: với 1 số nguyên n đã cho, bạn hãy tìm số nguyên tố lớn nhất mà n chia hết.

Dữ liệu vào: từ tệp UOCNT.INP

- Dòng đầu tiên gồm số nguyên dương T (1<T≤ 105).

- T dòng tiếp theo, mỗi dòng gồm số nguyên dương n (1<n< 106). Kết quả: ghi ra tệp UOCNT.OUT

- T dòng, mỗi dòng là số nguyên tố lớn nhất mà n chia hết. Ví dụ: UOCNT.INP UOCNT.INP 3 10 8 42 5 2 7

- Có 40% test có 1 < T < 5000 và 1 < n < 105 tương ứng 40% số điểm - Có 60% test có 5000 ≤ T ≤ 105 và 105 ≤ n < 106 tương ứng 60% số điểm. Cài đặt chương trình: Phần phụ lục

4.2. SUBARR

Hôm nay, lớp của An làm bài tập môn toán về nội dung chia đoạn thẳng. An được cô giáo giao cho bài toán sau:

Cho trước một dãy số nguyên a1, a2, …, an, thực hiện chia dãy thành 3 đoạn

mà các phần tử trong mỗi đoạn là liên tiếp nhau, sao cho tổng giá trị các phần tử của mỗi đoạn là bằng nhau. Hỏi có bao nhiêu cách để thực hiện?

Bạn hãy giúp An giải quyết bài toán trên.

Yêu cầu: Hãy đếm số cách chia dãy thành 3 đoạn thõa mãn yêu cầu bài toán.

 Dòng thứ nhất chứa số nguyên dương n(1 ≤ n ≤ 5*105)

 Dòng thứ hai chứa n số nguyên a[1], a[2], …, a[n] (|a[i]| ≤ 109)

các số trên một dòng cách nhau một dấu cách trống.

Dữ liệu ra: ghi ra tệp subarr.out một dòng duy nhất chứa giá trị là số cách phân chia dãy số.

Ví dụ subarr.inp subarr.out 5 1 2 3 0 3 2 4 0 1 -1 0 1 Giới hạn

70% số test tương ứng với 0< n ≤ 104

30% số test tương ứng với 104 < n ≤ 5*105

Cài đặt chương trình: Phần phụ lục

4.3. QUÀ TẶNG

Nhân ngày sinh nhật, hai anh em sinh đôi Tèo và Tý nhận được N món quà, N là số chẵn. Mỗi người gán cho mỗi món quà một giá trị ưa thích- là một số nguyên dương nhỏ hơn hoặc bằng 100. Giá trị này thể hiện mức độ hạnh phúc họ có được nếu có được món quà đó. Sau đó, 2 anh em quyết định chia quà, hai người có số lượng quà bằng nhau và bằng N/2.

Yêu cầu: Hãy xác định cách chia quà sao cho tổng mức độ hạnh phúc của hai anh

em là lớn nhất.

Dữ liệu: Vào từ file văn bản GIFT.INP trong đó:

+ Dòng đầu tiên là số nguyên dương N <500000

+ N dòng tiếp theo, mỗi dòng ghi 2 số nguyên dương a và b tương ứng là giá trị ưa thích của Tèo và Tý với từng món quà.

Kết quả: Ghi ra file GIFT.OUT duy nhất là số có tổng mức độ hạnh phúc lớn nhất.

Ví dụ: GIFT.INP GIFT.OUT 4 1 2 2 3 11

3 5 2 1

Ý tưởng:

+ Đọc 2 mảng tương ứng là a[i] và b[i] + Tạo mảng C[i]=a[i]-b[i]

+ Sắp xếp lại a[i] và b[i] theo chiều tăng dần của c[i]

Bài toán này dữ liệu vào tương đối lớn, nên để đảm bảo thời gian thực hiện, người lập trình nên sử dụng những thuật toán tốt hơn như Quick Sort, Counting Sort. Trong chương trình tham khảo, tôi sử dụng thuật toán Quick Sort.

+ Kết quả là tổng N/2 số đầu của b[i] và tổng N/2 số cuối của a[i]. Lấy như vậy mới được tổng mức độ hạnh phúc lớn nhất.

Cài đặt chương trình: Phần phụ lục

4.4. TỔ TÌNH NGUYỆN

(ĐỀ THI KHẢO SÁT ĐỘI TUYỂN HỌC SINH GIỎI TỈNH LỚP 12 NĂM HỌC 2021 – 2022 - CỤM QUỲNH LƯU – HOÀNG MAI)

Nguyên vừa tham gia vào đội tình nguyện hỗ trợ chống dịch COVID19 của nhà trường. Trong đội tình nguyện có n học sinh được chia thành từng tổ khác nhau. Mỗi học sinh thuộc về một tổ nào đó. Buổi đầu tiên làm quen Nguyên muốn biết đội tình nguyện có bao nhiêu tổ. Khi gặp từng người Nguyên hỏi duy nhất

một câu hỏi: ”Tổ của bạn có bao nhiêu người”, từ kết quả câu trả lời của các bạn

Nguyên đã xác định được số tổ của đội tình nguyện.

Yêu cầu: Cho n ≤ 106 và các câu trả lời. Hãy xác định số tổ của đội tình nguyện. Dữ liệu luôn đảm bảo có kết quả.

Dữ liệu vào: Từ file văn bản TTN.INP gồm:

- Dòng đầu tiên chứa một số tự nhiên n là số lượng các bạn học sinh được hỏi.

- Dòng thứ 2 ghi ra n số nguyên dương a1, a2, a3…an lần lượt là câu trả lời

của n học sinh được hỏi.

Dữ liệu ra: Ghi vào file văn bản TTN.OUT gồm một số tự nhiên k là số tổ của đội tình nguyện.

Ví dụ:

TTN.INP TTN.OUT

5

1 2 1 1 2

4

4.5. XÂU TƯƠNG ĐƯƠNG

(Đề thi cụm các trường THPT Yên Thành năm 2019-2020)

Cho hai xâu A,B chỉ gồm các kí tự latin thường (‘a’→ ‘z’). Hãy đếm xem có bao nhiêu xâu con liên tiếp trong xâu B mà “tương đương” với xâu A. Xâu con liên tiếp BiBi+1...Bj được gọi là “tương đương” với xâu A nếu chúng chỉ cần thay đổi thứ tự các ký tự là được xâu A (Ví dụ: xâu ‘abb’ tương đương với xâu ‘bab’. Như vậy, nhiệm vụ của bạn là đếm số cặp (i,j) như vậy.

Dữ liệu vào:

- Dòng thứ nhất chứa xâu A. - Dòng thứ hai chứa xâu B. (|A|≤|B|≤105).

*) Kí hiệu |S|là độ dài xâu S. Kết quả:

- Gồm một số nguyên dương duy nhất chính là số lượng xâu con liên tiếp “tương đương” với xâu A trong xâu B.

Ví dụ

XAU.INP XAU.OUT

ana bnaana

3

Giải thích: có ba xâu con liên tiếp của xâu B “tương đương” với xâu A là {naa}, {aan} và {ana}

Cài đặt chương trình: Phần phụ lục

Một phần của tài liệu Lý do chọn đề tài (Trang 47 - 50)