Test 1
4
10
Giải thích: \(S=1+2+3+4=10\)
Dòng đầu tiên chứa số nguyên \(T(1\le T\le 10^4)\) - Thể hiện số testcase.
\(T\) dòng tiếp theo, mỗi dòng chứa số nguyên dương \(n(1\le n\le 2.10^9)\)
Test 1
3
1
2
3
0
0
1
Giải thích: Ứng với \(n=1\) và \(n=2\). Không có cặp \((a,b)(a,b\in \mathbb{N}^{*})\) nào thỏa mãn nên đáp án là \(0\). Còn ứng với \(n=3\), có một cặp duy nhất thỏa mãn đó là \((2,1)\)
Cho \(3\) điểm \(X,A,B\) lần lượt nằm trên trục \(Ox\) và có tọa độ lần lượt là \(x,a,b\).
Hỏi giữa \(A\) và \(B\) điểm nào gần \(X\) hơn (Đề ra đảm bảo rằng, khoảng cách từ \(A\) đến \(X\) khác khoảng cách từ \(B\) đến \(X\)).
Test 1
5 7 2
A
Test 1
2 5 6
7
Cho xâu \(S\) chỉ gồm các kí tự chữ cái thường (\('a'...'z'\)).
Xâu \(S\) được gọi là xâu "chẵn" nếu số lần xuất hiện của từng chữ cái trong xâu \(S\) là số chẵn.
Test 1
aea
No
Giải thích: Vì số lần xuất hiện của kí tự \('e'\) trong xâu trên là số lẻ.
Henry có \(N\) chiếc lá. Trên chiếc lá thứ \(i(1\le i\le N)\) có ghi một số \(x_i\).
Anh ấy có thể chọn \(1\) hoặc nhiều chiếc lá từ \(N\) chiếc lá này sao cho giá trị trung bình của những con số ghi trên những chiếc lá đó bằng một số \(A\) cho trước. Hỏi anh ấy có bao nhiêu cách để thực hiện nhiệm vụ trên ?
Dòng thứ nhất chứa hai số nguyên \(N,A(1\le N,A\le 50)\).
Dòng thứ hai chứa \(N\) số nguyên \(x_i(1\le x_i\le 50)\) - Thể hiện những con số ghi trên những chiếc lá !
Test 1
3 3
1 5 5
2
Giải thích: Có hai cách để \(Henry\) có thể hoàn thành nhiệm vụ đó là:
Cách \(1\) : Chọn chiếc là thứ \(1\) và chiếc lá thứ \(2\).
Cách \(2\) : Chọn chiếc là thứ \(1\) và chiếc lá thứ \(3\).
Cho hình chữ nhật có chiều dài và chiều rộng lần lượt là \(7.8\) và \(6.4\). Bạn hãy viết chương trình hiển thị ra màn hình thông tin sau:
Output
DT = {P1}
CV = {P2}
Với {P1}
và {P2}
lần lượt là diện tích và chu vi của hình chữ nhật cho trước.
Bạn hãy viết chương trình hiển thị ra màn hình tổng, hiệu, tích và thương của \(2468\) và \(1234\) giống như sau:
Output
2468 + 1234 = {P1}
2468 - 1234 = {P2}
2468 * 1234 = {P3}
2468 // 1234 = {P4}
{P1}
là tổng của \(2468\) và \(1234\).{P2}
là hiệu của \(2468\) và \(1234\).{P3}
là tích của \(2468\) và \(1234\).{P4}
là thương của \(2468\) và \(1234\).Như bài trước bạn đã biết, để hiển thị ra màn hình một chuỗi ký tự 2468 + 1234 =
bạn có thể làm như sau:
Code
print("2468 + 1234 =")
Để hiển thị ra màn hình tổng của \(2468\) và \(1234\) bạn có thể làm như sau:
Code
print(2468 + 1234)
Vậy để hiển thị được ra màn hình 2468 + 1234 = {P1}
với {P1}
là tổng của \(2468\) và \(1234\) thì bạn cần kết hợp được hai câu lệnh trên giống như chương trình sau:
Code
print("2468 + 1234 =", 2468 + 1234)
Kết quả khi chạy chương trình:
Output
2468 + 1234 = 3702
Lưu ý: Nếu bạn thêm khoảng trắng vào sau dấu =
trong ví dụ trên thì kết quả sẽ sai do thừa 1 khoảng trắng (hàm print()
sẽ tự động thêm vào một khoảng trắng với mỗi một tham số mới). Ví dụ:
Code
print("2468 + 1234 = ", 2468 + 1234)
Kết quả khi chạy chương trình:
Output
2468 + 1234 = 3702
Bạn hãy viết chương trình Python hiển thị ra màn hình kết quả của các phép toán:
343 + 43
343 - 43
343 * 43
343 / 43
343 // 43
343 % 43
a / b
trong Python tương ứng với phép chia hai số thực trong các ngôn ngữ kháca // b
là chia nguyên (trong C++ thì //
là comment)Để hiển thị ra màn tổng của hai số trong ngôn ngữ lập trình Python rất đơn giản, bạn chỉ cần dùng hàm print()
với toán tử +
.
Ví dụ về chương trình dùng để tính tổng của \(12\) và \(15\):
Code
print(12 + 15)
Kết quả khi chạy chương trình:
Output
27
Lưu ý: khi sử dụng hàm print()
để thực hiện một phép toán bạn không được sử dụng cặp dấu nháy đôi ""
như ở các bài trước, vì nếu sử dụng cặp dấu nháy đôi này thì chương trình sẽ hiểu đó là một chuỗi các ký tự chứ không phải một phép toán. Ví dụ chương trình sau:
Code
print("12 + 15")
Kết quả khi chạy chương trình:
Output
12 + 15
Các em có nhận xét gì về kết quả của phép của các phép toán
In ra hình vẽ sau:
Output
*
* *
* *
* *
* *
***********
*
*
*
In ra hình vẽ sau:
Output
*
***
*****
*******
*********
***********
*
*
*
In ra hình vẽ sau:
Output
**********
**********
**********
Henry có \(N\) số nguyên \(a_1,a_2,...,a_N\). Mục tiêu của anh ta là làm cho \(N\) số nguyên này bằng nhau thông qua phép biến đổi sau:
Yêu cầu: Tìm tổng chi phí thấp nhất để Henry có thể thực hiện được mục tiêu trên.
Test 1
3
1 1 3
3
Giải thích: Anh ấy sẽ đưa tất cả các số trên về giá trị \(2\), do đó tổng chi phí là: \((1-2)^2+(1-2)^2+(3-2)^2=3\)
Cho \(3\) số nguyên \(A,B,C\). Tìm số lần biến đổi tối thiểu để làm cho ba số này bằng nhau bằng cách thực hiện những phép biến đổi sau theo thứ tự bất kì:
Phép biến đổi 1: Chọn \(2\) trong \(3\) số \(A,B,C\) và tăng chúng lên \(1\) đơn vị.
Phép biến đổi 2: Chọn \(1\) trong \(3\) số \(A,B,C\) và tăng số đó lên \(2\) đơn vị.
Test 1
2 5 4
2
Henry có \(N\) số nguyên \(a_1,a_2,...,a_N\). Mục tiêu của anh ta là làm cho \(N\) số nguyên này bằng nhau thông qua phép biến đổi sau:
Yêu cầu: Tìm tổng chi phí thấp nhất để Henry có thể thực hiện được mục tiêu trên.
Test 1
3
1 1 3
3
Giải thích: Anh ấy sẽ đưa tất cả các số trên về giá trị \(2\), do đó tổng chi phí là: \((1-2)^2+(1-2)^2+(3-2)^2=3\)
Cho mảng \(A\) gồm \(n\) số nguyên dương.
Một mảng con (gồm những phần tử liên tiếp) của mảng \(A\) gọi là "kì diệu" nếu mỗi số nguyên trong đoạn con đó xuất hiện đúng \(3\) lần.
Yêu cầu: Đếm số lượng mảng con "kì diệu" có trong \(A\).
Dòng thứ nhất chứa số nguyên \(n(1\le n\le 5.10^5)\)
Dòng thứ hai chứa \(n\) số nguyên \(a_1,a_2,...,a_n\) với \(1\le a_i\le n\text{ } \forall i=\overline{1,n}\)
Test 1
8
1 2 3 3 3 2 2 1
2
Giải thích: Các đoạn con "kì diệu" đó là: \([3,3,3],[2,3,3,3,2,2]\)
Bạn có một số nguyên dương \(N\). Nhiệm vụ của bạn là xuất ra tất cả các số nguyên tố từ \(1\) tới \(N\).
Test 1
10
2 3 5 7
Yêu cầu: Tìm số \(B\) nhỏ nhất thỏa mãn những điều kiện sau:
Test 1
7 1 7
17
Test 2
12 2 1
101
Cho một mảng ban đầu rỗng và có sức chứa tối đa là \(C\).
Cho \(N\) phần tử có giá trị bằng nhau.
Tiếp theo, ta lặp lại quá trình dưới đây cho đến khi \(N\) phần tử được đưa hết vào mảng thì dừng:
Nếu mảng chưa bị tràn, thêm vào mảng một phần tử, việc này tốn \(1\)VND (Việt Nam Đồng)
Nếu mảng bị tràn, thay mảng cũ bằng mảng mới có sức chứa gấp đôi mảng cũ, việc này không tốn chi phí
Sao chép từng phần tử của mảng cũ sang mảng mới, mỗi phần tử tốn \(1\) VND
Để hiểu rõ hơn quá trình trên, ta có thể xem ví dụ dưới đây:
Hành động | Sức chứa | Số lượng phần tử hiện tại | Chi phí |
---|---|---|---|
Bắt đầu | C = 1 | 0 | 0 |
Thêm | C = 1 | 1 | 1 |
Thêm | Tràn mảng | ||
Đổi mảng | C = 2 | 0 | 0 |
Sao chép | C = 2 | 1 | 1 |
Thêm | C = 2 | 2 | 1 |
Thêm | Tràn mảng | ||
Đổi mảng | C = 4 | 0 | 0 |
Sao chép | C = 4 | 2 | 2 |
Thêm | C = 4 | 3 | 1 |
Vậy tổng chi phí để đưa \(N\) phần tử vào mảng là \(1+1+1+2+1=6\) VND
Yêu cầu: Cho hai số \(C\) và \(N\). In ra tổng chi phí để đưa \(N\) phần tử vào mảng.
Test 1
1 3
6
Cho ma trận \(A\) có kích thước \(n\text { x }n\) với \(n\in \mathbb{N}^{*}\)
Vết của ma trận \(A\) có kí hiệu là \(tr(A)\) và được định nghĩa như sau: \(tr(A)=\sum\limits_{i=1}^{n}A[i][i]\) (tổng các phần tử trên đường chéo chính).
Xét tất cả các ma trận vuông con (của ma trận \(A\)) có kích thước \(k\text{ x }k\) (bằng cách bỏ đi một số hàng( hoặc không bỏ hàng nào) và một số cột (hoặc không bỏ cột nào) của ma trận \(A\) ) với \(1\le k\le n\), hãy tìm ma trận con có vết lớn nhất và in giá trị đó ra màn hình.
Dòng thứ nhất chứa hai số nguyên \(n,k(1\le n\le 50;1\le k\le n)\)
\(n\) dòng tiếp theo, mỗi dòng là một chuỗi gồm \(n\) kí tự số (\('0'..'9'\))
Test 1
3 3
123
456
789
15
Test 2
5 3
12689
55555
55555
55555
55555
16
Test 3
3 2
233
111
233
6
Giải thích: Ở ví dụ 3, ta bỏ đi hàng \(2\) và cột \(1\). Ta sẽ còn lại ma trận con \(2\times 2\) có vết lớn nhất là \(6\). Còn ở ví dụ \(4\), ta bỏ đi các cột \(1,2\) và các hàng \(2,4\). Khi đó ta thu được ma trận \(3\times 3\) có vết lớn nhất là \(9\)
Test 4
5 3
23333
11111
23333
11111
23333
9
Dòng thứ nhất chứa số nguyên \(n(1\le n\le 10)\)
Dòng thứ hai chứa \(n\) số nguyên \(a_1,a_2,...,a_n\) với \(1\le a_i\le 1000 \text{ } \forall 1\le i\le n\)
Test 1
3
42 27 38
44
Giải thích: Đối với ví dụ này, cách đặt: \(42 \And 27\) ^ \(38\) sẽ cho giá trị lớn nhất đó là \(44\)
Có một tấm thẻ trên bàn, và bau đầu có một số \(s\) được viết trên nó, ở mỗi bước bạn có thể thực hiện \(1\) trong \(2\) phép toán sau:
Giả sử số ghi trên tấm thẻ là \(x\), thì thay nó bằng \(2 * x+1\)
Giả sử số ghi trên tấm thẻ là \(x\), thì thay nó bằng \(3 * x+1\)
Hỏi chúng ta cần thực hiện ít nhất bao nhiêu phép toán trên để thu được được số \(t\). Nếu không thể biến đổi \(s\) thành \(t\) in ra \(-1\).
Dòng thứ nhất chứa số \(T(1\le T\le 30\)) - Thể hiện số testcase của bài toán
T dòng tiếp theo, mỗi dòng chứa hai số nguyên \(s,t(0\le s,t\le 10^6)\)
Test 1
2
1 3
3 15
1
2
Bạn được cho độ dài 3 cạnh \(a,b,c\) như hình vẽ lần lượt thể hiện độ dài các cạnh của một hình lục giác lớn, và hình lục giác lớn này sẽ bao phủ các hình lục giác nhỏ. Hãy đếm xem tổng cộng có bao nhiêu hình lục giác nhỏ.
Test 1
1
2 3 4
18
Cho hai xâu \(S\) và \(T\) đều có độ dài là \(N\) và chỉ chứa hai ký tự là \(0\) và \(1\). Bạn có thể thực hiện trên xâu \(S\) phép toán sau với số lượng bất kỳ:
Chú ý: Chỉ số của xâu đánh từ số \(1\).
Hỏi: Ta có thể biến xâu \(S\) thành xâu \(T\) hay không ? Nếu có thì in ra số lượng phép toán tối thiểu cần dùng. Ngược lại, in ra \(-1\)
Dòng thứ nhất chứa số \(t\) - Thể hiện số testcase
\(t\) block tiếp theo, mỗi block có dạng:
\(N\text{ }\)
\(S\text{ }\)
\(T\).
Với \(1\le N\le 5.10^5\).
Test 1
2
2
01
10
2
00
11
1
-1
Một máy điều hóa chỉ được bật khi nhiệt độ ngoài trời \(X\) không nhỏ hơn 30. Bạn được cho một số nguyên \(X\), và phải kiểm tra xem ta có nên bật điều hòa hay không.
Yes
nếu ta nên bật máy điều hòa. Ngược lại hãy in No
.Test 1
2
30
25
Yes
No