Kỹ thuật sàng - vét cạn - tham lam

Số bị nhầm tai hại (bài 2 - tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Trong một buổi học toán, giáo viên viết 2 số nguyên A và B và yêu cầu Tý thực hiện phép cộng. Tý không bao giờ tính toán sai nhưng thỉnh thoảng cậu ta chép các con số một cách không chính xác. Lỗi duy nhất của Tý là ghi nhầm '5' thành '6' hoặc ngược lại.

Cho hai số, A và B, tính tổng lớn nhất và nhỏ nhất mà Tý có thể nhận được nếu bị nhầm.

Input Format: 1 dòng duy nhất chứa 2 số A và B

Ràng buộc: ~1 \leq A \leq B \leq 10^6~

Input 01:
35 36
Output 01:
72 70
Input 02:
891 746
Output 02:
1637 1636

Đổi tiền (tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Tại ngân hàng có các mệnh giá băng 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000. Tổng số tiền cần đổi có giá trị bằng N. Hãy xác định xem có ít nhất bao nhiêu tờ tiền sau khi đổi tiền?


Dòng duy nhất chứa số nguyên N


Ràng buộc: 1<=N<=10^9


Đầu ra: In ra số tờ tiền tối thiểu


Input:
138
Output:
6

Max product sum (tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A gồm N phần tử, nhiệm vụ của bạn là sắp đặt lại vị trí các phần tử trong mảng và tính toán giá trị lớn nhất của biểu thức:


Đầu vào: Dòng 1 chứa số nguyên dương N; Dòng 2 chứa N số nguyên của mảng A[] viết cách nhau một dấu cách


Ràng buộc: 1<=N<=10^6; 1<=A[i]<=10^9;


Đầu ra: In ra kết quả của bài toán chia dư với 10^9 + 7


Input:
6
8 1 7 9 8 1
Output:
150

Chia tập (tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A[] gồm N số nguyên không âm và số K. Nhiệm vụ của bạn là hãy chia mảng A[] thành hai mảng con có kích cỡ K và N-K sao cho hiệu giữa tổng hai mảng con là lớn nhất. Ví dụ với mảng A[] = {8, 4, 5, 2, 10}, K=2 ta có kết quả là 17 vì mảng A[] được chia thành hai mảng {4, 2} và { 8, 5, 10} có hiệu của hai mảng con là 23-6=17 là lớn nhất.


Đầu vào: Dòng duy nhất chứa 2 số nguyên N và K; Dòng thứ 2 gồm N số của mảng A[]


Ràng buộc: 1<=K<=N<=10^6; 0<=A[i]<=10^9;


Đầu ra: In ra đáp án của bài toán


Input:
6 4
3 10 10 7 5 2
Output:
27

Sắp xếp tham lam

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A[] gồm N số, hãy thực hiện các thao tác theo nguyên tắc dưới đây:

  1. Ta chọn một mảng con sao cho phần tử ở giữa của mảng con cũng là phần tử ở giữa của mảng A[] (trong trường hợp N lẻ).

  2. Đảo ngược mảng con đã chọn trong mảng A[]. Ta được phép chọn mảng con và phép đảo ngược mảng con bao nhiêu lần tùy ý.

Hãy cho biết ta có thể sắp xếp được mảng A[] bằng cách thực hiện các thao tác kể trên hay không?

Ví dụ với mảng A[] = (1, 6, 3, 4, 5, 2, 7} ta có câu trả lời là YES vì: ta chọn mảng con {3, 4, 5) và đảo ngược để nhận được mảng All=(1, 6, 5, 4, 3, 2, 7}, chọn tiếp mảng con {6, 5, 4, 3, 2} và đảo ngược ta nhận được mảng A[]=(1, 2, 3, 4, 5, 6, 7}.


Đầu vào:

Dòng 1 chứa số nguyên dương N là số lẻ.

Dòng 2 chứa N số nguyên của mảng A[]


Ràng buộc: 1 <= N <= 10^6; 0 <= A[i] <= 10^9


Đầu ra: In ra YES hoặc NO là đáp án của bài toán


Input 01:
5
1 4 3 2 5
Output 01:
YES
Input 02:
5
1 3 8 7 3
Output 02:
NO

Max product of two array (tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A[], B[] đều có N phần tử. Nhiệm vụ cúa bạn là tìm giá trị lớn nhất của biểu thức P= A[0]B[0] + A[1]B[1] + ..+A[N-1]*B[N-1] bằng cách tráo đổi vị trí các phần tử của cả mảng A[] và B[].


Đầu vào: Dòng 1 chứa số nguyên dương N; Dòng 2 chứa N số nguyên của mảng A[]; Dòng 3 chứa N số nguyên của mảng B[]


Ràng buộc: 1 <= N<= 10^5; 0 <= A[i], B[i] <= 10^6


Đầu ra: In ra đáp án của bài toán


Input:
7
9 4 5 3 9 4 10
9 5 3 1 10 1 5
Output:
270

Số may mắn 2

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Hoàng yêu thích các số may mắn. Ta biết rằng một số là số may mắn nếu biểu diễn thập phân của nó chỉ chứa các chữ số may mắn là 4 và 7. Ví dụ, các số 47, 744, 4 là số may mắn và 5, 17, 467 không phải. Hoàng muốn tìm số may mắn bé nhất có tổng các chữ số bằng n. Hãy giúp anh ấy.


Đầu vào: Dòng duy nhất chứa số nguyên dương n


Ràng buộc: 1<=n<=10^6;


Đầu ra: In ra đáp án của bài toán, nếu không tồn tại đáp án thì in ra -1


Input:
16
Output:
4444

Sắp đặt xâu ký tự

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho xâu kí tự chỉ bao gồm các kí tự in thường, hãy kiểm tra xem có thể sắp đặt lại các kí tự trong xâu sao cho không có 2 kí tự kề nhau nào giống nhau hay không?


Đầu vào: Dòng duy nhất chứa xâu S


Ràng buộc: 1<=len(S)<=10000;


Đầu ra: Nếu có thể sắp đặt lại xâu kí tự in ra YES, ngược lại in ra NO.


Input:
aqeaaqwq
Output:
YES

Số nhỏ nhất (tham lam)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai số nguyên dương S và D, trong đó S là tổng các chữ số và D là số lượng các chữ số của một số. Nhiệm vụ của bạn là tìm số nhỏ nhất thỏa mãn S và D?


Đầu vào: 1 dòng gồm 2 số S, D


Ràng buộc: 1<=S,D<=1000;


Đầu ra: In ra số nhỏ nhất có D chữ số và có tổng bằng S, nếu không tìm được đáp án thì in ra -1


Input:
12 8
Output:
10000029

In ra các số nguyên tố từ 1 đến n (sàng số nguyên tố)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

In ra các số nguyên tố từ 1 đến n sử dụng sàng số nguyên tố


Ràng buộc: n đến 10^6


Input 01:
10
Output 01:
2 3 5 7
Input 02:
100
Output 02:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Đếm ước của n giai thừa

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Đếm số lượng ước của n!.

Input: Dòng đầu tiên là số lượng test case T (1≤T≤100). Mỗi test case là một số nguyên không âm n (1≤n≤100).

Output: In ra kết quả mỗi test case trên 1 dòng.


Ví dụ:

Input:
2
10
97
Output:
270
26494182162432000

Truy vấn số lượng số nguyên tố trong đoạn (mảng 1 chiều nâng cao)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho K truy vấn, bạn hãy đếm các số nguyên tố trong khoảng từ Left đến Right


Ràng buộc: ~1 \leq K \leq 10^4~; ~1 \leq L, R \leq 10^6~


Input:
9
3 17
1 11
2 18
1 15
4 15
4 18
4 17
2 12
4 20
Output:
6
5
7
6
4
5
5
5
6

Số nguyên tố trong đoạn

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Viết chương trình cho phép nhập vào hai số nguyên dương và tìm tất cả các số nguyên tố nằm trong khoảng đó.


INPUT:
10 50
OUTPUT:
11 13 17 19 23 29 31 37 41 43 47

Đếm số lượng số nguyên tố nhỏ hơn N

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho số nguyên dương N ≤ 10^6. Hãy đếm có bao nhiêu số nguyên tố nhỏ hơn hoặc bằng N.


Input:
10
Output:
4

Số nguyên tố kề nhau

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai số nguyên dương N và M thỏa N < M ≤ 10^3. Hãy tìm tất cả các cặp số nguyên tố liên tiếp nằm trong đoạn [N, M] (bao gồm hai đầu) có hiệu nhỏ nhất. Một cặp số nguyên tố liên tiếp là hai số nguyên tố p và q sao cho không tồn tại số nguyên tố nào nằm giữa p và q và p < q.


Dữ liệu vào: Một dòng chứa hai số nguyên N và M (cách nhau bằng dấu cách hoặc xuống dòng).

Dữ liệu ra:

• Nếu tồn tại ít nhất một cặp số nguyên tố liên tiếp trong đoạn [N, M] thì in ra từng cặp trên một dòng, theo thứ tự tăng dần của cặp (theo thành phần đầu). Mỗi dòng có dạng: p q (với p và q là hai số nguyên tố liên tiếp thỏa N ≤ p < q ≤ M, và q - p bằng hiệu nhỏ nhất tìm được.)

• Nếu trong đoạn [N, M] có dưới 2 số nguyên tố (không thể tạo được cặp nào) thì in ra một dòng duy nhất chứa: -1


Ràng buộc: 0 ≤ N < M ≤ 1000


Input:
2 20
Output:
2 3

Giải thích: Các số nguyên tố trong đoạn là 2, 3, 5, 7, 11, 13, 17, 19). Hiệu nhỏ nhất giữa hai số nguyên tố liên tiếp là 1, cặp thỏa là (2,3)

Input:
3 13
Output:
3 5
5 7
11 13
Input:
14 16
Output:
-1

Số mũ của một số nguyên tố trong N!

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai số nguyên N và p (với p là số nguyên tố).

Tính số mũ của p trong N!, tức là số lần p xuất hiện trong phân tích thừa số nguyên tố của N!.


Đầu vào nhập 2 số nguyên N và P

Đầu ra: In ra số mũ của P trong N giai thừa


Input:
10 2
Output:
8

Số 0 tận cùng của N!

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho là số nguyên N ≤ 10^9.

Tính số chữ số 0 tận cùng của N!


Đầu vào: Nhập N

Đầu ra: In ra số lượng chữ số 0 tận cùng của N!


Input:
100
Output:
24

Uớc nguyên tố lớn nhất của N!

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho N là số nguyên nhỏ hơn hoặc bằng 10^6

Tìm ước nguyên tố lớn nhất xuất hiện trong N!


Đầu vào: Nhập số nguyên N (2 < N <= 10^6)

Đầu ra: In ra số nguyên tố lớn nhất xuất hiện trong N!


Input 01:
10
Output 01:
7
Input 02:
999999
Output 02:
999983

Số chia hết cho N!

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một số M ≤ 10^12 và N ≤ 100.

Hãy kiểm tra xem M có chia hết cho N! hay không.


Đầu vào: Nhập M và N là 2 số nguyên

Đầu ra: In ra YES nếu M chia hết cho N!, ngược lại in ra NO


Input 01:
24 4
Output 01:
YES
Input 02:
12 4
Output 02:
NO