PRE THI HUYỆN #02

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 LCM 50 (p) 1.0s 1G
2 SORT 50 (p) 1.0s 1G
3 MẬT KHẨU 50 (p) 1.0s 1G
4 Phép trừ 50 (p) 1.0s 1G

1. LCM

Điểm: 50 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: lcm.inp Output: lcm.out

Ngày xửa ngày xưa, ở vùng đất Toán học, có hai bạn tên là An và Bình. Cả hai đều đam mê toán học và thích giải toán. Một ngày nọ, thầy giáo của họ đưa cho họ một nhiệm vụ đặc biệt: Ông cho họ hai số bất kì, và yêu cầu họ tìm ra số nhỏ nhất chia hết cho cả hai số đó.

Hào hứng với thách thức, An và Bình bắt đầu hành trình của mình. Hai bạn quyết định bắt đầu với hai số nhỏ, 12 và 18. Họ bắt đầu bằng cách liệt kê:

  • Các bội số của 12: 12, 24, 36, 60, 72, …
  • Các bội số của 18: 18, 36, 54, 72, 90, …

Khi xem xét danh sách này, hai bạn nhận thấy số nhỏ nhất chia hết cho 12 và 18 là 36. Nhưng mà, cách liệt kê này thực hiện rất khó khăn đối với những số lớn hơn. Bạn hãy giúp An và Bình nhé!

Dữ liệu vào:
Vào từ file LCM.INP chứa hai số nguyên dương a và b (a,b <= 1000000)
Dữ liệu ra:
Ghi vào file LCM.OUT số cần tìm.

Sample
LCM.INP
12 18
LCM.OUT
36

2. SORT

Điểm: 50 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: SORT.INP Output: SORT.OUT

Trong chuyến du ngoạn khắp nhân gian, nhóm bạn của Mai đã đến một thị trấn nhỏ tên Sorting, nơi mà các thuật toán sắp xếp được xem là một nghệ thuật cao cấp và con số được xem là những nhân vật sống.
Một ngày nọ, nhóm bạn của Mai nhận được một nhiệm vụ đặc biệt từ thị trấn Sorting: một dãy số nguyên đã bị xáo trộn và cần được sắp xếp theo thứ tự tăng dần chữ số cuối cùng của số, nếu hai số có cùng chữ số cuối cùng bằng nhau thì số nhỏ hơn sắp xếp đứng trước. Nếu bạn là một thành viên trong nhóm bạn đó, bạn sẽ giải quyết bài toán như thế nào?
Dữ liệu vào:
Vào từ file SORT.INP:
• Dòng đầu tiên chứa số nguyên dương \(n (1 \leq n \leq 10^5)\)
• Dòng thứ hai chứa n số nguyên dương \(a_1,a_2,.., a_n (|a_i|\leq 10^9)\)
Dữ liệu ra: Ghi vào file SORT.OUT dãy số sau khi được sắp xếp.

Sample 1
SORT.INP
8
1 7 0 7 2 0 0 7
SORT.OUT
0 0 0 1 2 7 7 7
Sample 2
SORT.INP
8
1 71 10 70 28 80 80 7
SORT.OUT
10 70 80 80 1 71 7 28

3. MẬT KHẨU

Điểm: 50 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: password.inp Output: password.out

Alex là một thám tử kỹ thuật số nổi tiếng, một hôm nọ anh nhận được một email nặc danh thách đố anh phải giải được tất cả mật khẩu ẩn sau những chuỗi kí tự đó.
Sau khi phân tích, Alex nhận ra rằng mật khẩu là tổng của tất cả các số có trong chuỗi đó. Một số trong chuỗi là tập hợp tất cả các kí tự liền kề nhau với độ dài lớn nhất. Tuy nhiên, có quá nhiều chuỗi và Alex biết rằng nó sẽ mất quá nhiều thời gian để tính toán thủ công.
Suy nghĩ nhanh, Alex muốn viết một chương trình đơn giản để tự động hóa việc tính toán. Nhưng vì bận rộn, anh ấy không có thời gian viết bạn hãy giúp anh ấy nhé.
Dữ liệu vào:
Vào từ file PASSWORD.INP chứa một chuỗi kí tự \(S\) (độ dài \(S \leq10^6\))
Dữ liệu ra:
Ghi ra file PASSWORD.OUT mật khẩu cần tìm.

Sample
PASSWORD.INP
Chucmungnammoi2024va2025
PASSWORD.OUT
4049

4. Phép trừ

Điểm: 50 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: sub.inp Output: sub.out

Có một nhà toán học trẻ tên là Tim. Tim rất thích giải phương trình và luôn tìm kiếm những thử thách mới.
Một ngày, Tim gặp phải một phương trình đơn giản mà anh chưa từng thấy trước: a - b = c. Ở mặt đầu, nó có vẻ như một vấn đề dễ dàng để giải quyết, nhưng khi a,b là những số siêu lớn nó rất mất thời gian tính. Bạn hãy giúp Tim viết một chương trình giải quyết vấn đề trên nhé!
Dữ liệu vào:
Vào từ file SUB.INP chứa hai số nguyên dương a,b (a,b <= \(10^{200}\))
Dữ liệu ra:
Ghi vào file SUB.OUT chứa hiệu cần tìm.

Sample
Input
17 7
Output
10