

Nguyễn Thanh Nga
Giới thiệu về bản thân



































def should_swap(a, b): if a % 2 != 0 and b % 2 == 0: return True elif a % 2 == b % 2 and a > b: return True else: return False def bubble_sort_chan_le(arr): n = len(arr) for i in range(n - 1): for j in range(0, n - i - 1): if should_swap(arr[j], arr[j + 1]): arr[j], arr[j + 1] = arr[j + 1], arr[j] my_list = [64, 34, 25, 12, 22, 11, 90] bubble_sort_chan_le(my_list) print("Mảng đã sắp xếp:", my_list)
Trình bày thuật toán Bước 1. Nhập dãy số a[1], a[2], ..., a[n]. Bước 2. Tính tổng các phần tử của dãy số S = a[1] + a[2] + ... + a[n]. Bước 3. Kiểm tra nếu tổng S chia hết cho 2: Bước 3.1. Nếu đúng, trả về "Tổng chẵn". Bước 3.2. Nếu sai, trả về "Tổng lẻ". [1] Chuyển mô tả thành chương trình bằng phương pháp làm mịn dần: A = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)] Tính tổng các phần tử của dãy số S = a[1] + a[2] + ... + a[n]. → Làm mịn tiếp tại [2] if S%2 == 0: return "Tổng chẵn" else: return "Tổng lẻ" [2] Làm mịn chương trình tính tổng: S = 0 Duyệt dãy từ i = 0 đến n: → Có thể chuyển trực tiếp thành câu lệnh S = S + a[i] [3] Chương trình hoàn chỉnh: A = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)] S = 0 Duyệt dãy từ i = 0 đến n: → Có thể chuyển trực tiếp thành câu lệnh S = S + a[i] if S%2 == 0: return "Tổng chẵn" else: return "Tổng lẻ"
Kiểm thử phần mềm (software testing) là một quá trình bao gồm nhiều hoạt động nhằm đánh giá chất lượng các sản phẩm phần mềm và giảm thiểu rủi ro do lỗi gây ra trong quá trình vận hành khi đưa vào sử dụng thực tế. Các hoạt động kiểm thử này bao gồm các hoạt động xem xét đánh giá (review) tài liệu, các bản thiết kế, và bao gồm mã nguồn (source code), các hoạt động này trong thực tế hay gọi là “review” (rà soát). Và các hoạt động kiểm thử được thực hiện trên sản phẩm (nếu bạn gặp từ “dynamic testing”).
Dưới đây là một số hoạt động kiểm thử cơ bản: Lập kế hoạch kiểm thử (test planning) Phân tích kiểm thử (test analysis) Thiết kế các trường hợp kiểm thử (test design) Thực thi kiểm thử (test execution) Báo cáo kết quả kiểm thử (test reporting)
- Xác định các thông tin đã biết.
- Lãi suất giai đoạn 1 (6 tháng đầu): 5%/năm = 5%/12/tháng ≈ 0.004167/tháng
- Lãi suất giai đoạn 2 (từ tháng 7 trở đi): 12%/năm = 12%/12/tháng = 0.01/tháng
- Thời hạn vay tối đa: 20 năm = 240 tháng
- Mức vay tối đa: 85% giá trị căn nhà
- Khả năng trả góp hàng tháng: 15 triệu đồng
- Tiền góp từ người thân: 15% giá trị căn nhà
- Tính toán giá trị căn nhà tối đa có thể mua.
Giả sử giá trị căn nhà là X triệu đồng. Số tiền vay tối đa từ ngân hàng là 0.85X triệu đồng. Số tiền góp từ người thân là 0.15X triệu đồng.
Tổng số tiền mua nhà là X = 0.85X + 0.15X. Đây là một phương trình hiển nhiên đúng.
Ta cần sử dụng công thức tính toán trả góp để tìm X. Tuy nhiên, do lãi suất thay đổi sau 6 tháng, việc tính toán trở nên phức tạp hơn. Chúng ta cần chia việc tính toán thành hai giai đoạn:
- Giai đoạn 1 (6 tháng đầu): Áp dụng công thức trả góp với lãi suất 0.004167/tháng. Tuy nhiên, chúng ta không thể tính toán trực tiếp vì chưa biết số tiền vay.
- Giai đoạn 2 (234 tháng còn lại): Áp dụng công thức trả góp với lãi suất 0.01/tháng. Tương tự, chúng ta cũng chưa biết số tiền vay còn lại sau 6 tháng.
ĐK: \(\begin{cases}x>0\\ 5^{x}-m\ge0\end{cases}\) ⇔ \(\begin{cases}x>0\\ x>\log_5m\end{cases}\) (*)
Do m nguyên dương nên m ≥ 1 ⇒ log5m ≥ 0.
Ta có: (2\(\left(\log_3x\right)^2\) −\(\log_3x\) −1)\(\sqrt{5^{x}-m}\) = 0
⇔ \(\begin{cases}\log_3x=1\\ \log_3x=-\frac12\\ 5^{x}=m\end{cases}\) ⇔\(\begin{cases}x=3\\ x=\frac{1}{\sqrt3}\\ x=\log_5m\end{cases}\)
TH1: m = 1 thì (*) là \(\begin{cases}x>0\\ x\ge0\end{cases}\) ⇔ x > 0.
Mà m = 1 ⇒ x = log5m = 0 (KTM) nên phương trình đã cho chỉ có hai nghiệm x1 = 3 và x2 = \(\frac{1}{\sqrt3}\)
TH2: m > 1 thì (*) là \(\begin{cases}x>0\\ x\ge\log_5m\end{cases}\) ⇔ x ≥ log5m.
Do đó phương trình đã cho chắc chắn có nghiệm x1 = log5m.
Do đó để phương trình có hai nghiệm phân biệt thì nó chỉ có thể nhận thêm một trong hai nghiệm x = 3 hoặc x= \(\frac{1}{\sqrt3}\)
+) Nếu \(\frac{1}{\sqrt3}\)>log5m ⇒ 3 > log5m nên cả hai nghiệm 3 và \(\frac{1}{\sqrt3}\) đều thỏa mãn ĐK nên phương trình đã cho có 3 nghiệm (loại).
+) Nếu \(\frac{1}{\sqrt3}\)= log5m⇔ m = \(5^{\frac{1}{\sqrt3}}\) ∉ Z nên không xét trường hợp này.
+) Nếu \(\frac{1}{\sqrt3}\) < log5m ⇔ m > \(5^{\frac{1}{\sqrt3}}\) thì để phương trình đã cho có hai nghiệm phân biệt thì nghiệm x = 3 phải thỏa mãn 3 > log5m ⇔ m < 53 = 125.
ĐK: \(\begin{cases}x>0\\ 5^{x}-m\ge0\end{cases}\) ⇔ \(\begin{cases}x>0\\ x>\log_5m\end{cases}\) (*)
Do m nguyên dương nên m ≥ 1 ⇒ log5m ≥ 0.
Ta có: (2\(\log_3x\) −\(\log_3x\) −1)\(\sqrt{5^{x}-m}\) = 0
⇔ \(\begin{cases}\log_3x=1\\ \log_3x=-\frac12\\ 5^{x}=m\end{cases}\) ⇔\(\begin{cases}x=3\\ x=\frac{1}{\sqrt3}\\ x=\log_5m\end{cases}\)
TH1: m = 1 thì (*) là \(\begin{cases}x>0\\ x\ge0\end{cases}\) ⇔ x > 0.
Mà m = 1 ⇒ x = log5m = 0 (KTM) nên phương trình đã cho chỉ có hai nghiệm x1 = 3 và x2=1√3.
TH2: m > 1 thì (*) là \(\begin{cases}x>0\\ x\ge\log_5m\end{cases}\) ⇔ x ≥ log5m.
Do đó phương trình đã cho chắc chắn có nghiệm x1 = log5m.
Do đó để phương trình có hai nghiệm phân biệt thì nó chỉ có thể nhận thêm một trong hai nghiệm x = 3 hoặc x= \(\frac{1}{\sqrt3}\)
+) Nếu \(\frac{1}{\sqrt3}\)>log5m ⇒ 3 > log5m nên cả hai nghiệm 3 và \(\frac{1}{\sqrt3}\) đều thỏa mãn ĐK nên phương trình đã cho có 3 nghiệm (loại).
+) Nếu \(\frac{1}{\sqrt3}\)= log5m⇔ m = \(5^{\frac{1}{\sqrt3}}\) ∉ Z nên không xét trường hợp này.
+) Nếu \(\frac{1}{\sqrt3}\) < log5m ⇔ m > \(5^{\frac{1}{\sqrt3}}\) thì để phương trình đã cho có hai nghiệm phân biệt thì nghiệm x = 3 phải thỏa mãn 3 > log5m ⇔ m < 53 = 125.