Ước số và tổng ước số

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

Point: 100

Cho số nguyên dương N (N <= 2 * 10~^9~).

Yêu cầu: Đếm số lượng ước số của N và tổng các ước số của N.

Input: Số nguyên dương N

Output: Chứa hai số nguyên là số lượng ước số và tổng các ước của N.

Ví dụ:

Input                           Output
10                              4 18

Giải thích: Số 10 có ước là 1 2 5 10 và tổng 1 + 2 + 5 + 10 = 18


Vị trí ban đầu

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

Point: 100

Cho mảng ~A~ gồm ~n~ phần tử phân biệt. Gọi ~B~ là mảng ~A~ sau khi sắp xếp không giảm.
Gọi ~C_i~ là vị trí trên mảng ~A~ sao cho ~B_i = A_{C_i}~.

Hãy tính mảng C, hay nói cách khác là hãy cho biết vị trí ban đầu trên mảng A của mỗi phần tử trên B.

Input:

  • Dòng đầu tiên in ra số n (n <= 100000).
  • Dòng thứ hai in ra n số nguyên A1, A2, ..., An (1 <= Ai <= 10^9).

Output: In ra một dòng duy nhất gồm n số nguyên C1, C2, ..., Cn.

Scoring:

  • Subtask 1 (30% số điểm): n <= 1000
  • Subtask 2 (30% số điểm): Ai <= 1000000
  • Subtask 3 (40% số điểm): không có giới hạn nào khác

Ví dụ:

Input                           Output
3                               3 1 2
2 3 1

Ước chung

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

Point: 100

Bạn được cho một mảng gồm n guyên dương. Việc của bạn là tìm hai số nguyên sao cho ước chung lớn nhất của chúng càng lớn càng tốt.

Input:

  • Dòng đầu tiên là một số nguyên n: kích thước của mảng.
  • Dòng thứ hai chứa n số nguyên x1, x2, ..., xn: các phần tử của mảng.

Output: In ra ước chung lớn nhất tối đa.

Constraints:

  • 2 <= n <= 2 * 10~^5~.
  • 1 <= xi <= 10~^6~.

Ví dụ:

Input                           Output
5                               7
3 14 15 7 9 


Số nhỏ thứ k

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

Point: 100

Cho một dãy gồm N số nguyên dương và số K (K <= N). Hãy in ra số nhỏ thứ K trong dãy.

Input:

  • Dòng đầu chứ số N, K.
  • Dòng thứ hai chứa N số nguyên dương A1, A2, ..., An.

Output: Một dòng chứa dãy số nhỏ thứ K trong dãy.

Ví dụ:

Input                           Output
6 4                             91
91 451 43 3 452 54 

Biến đổi số

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

Point: 100

Vào một buổi sáng, rất tình cờ Nam nhìn thấy một số nguyên dương N trên đường từ nhà đến trường. Vì Nam rất thích số 30 nên Nam muốn biến đổi số N thành số M có dạng là số lớn nhất và là bội của số 30 bằng cách thay đổi vị trí của các chữ số trong số N mà Nam nhìn thấy.

Bạn hãy hỗ trợ Nam bằng cách viết chương trình để tìm số M (nếu nó tồn tài).

Input: Gồm một dòng duy nhất chứa số nguyên N (N có tối đa là 10^5 chữ số).

Output: In ra số M tìm được. Nếu không tồn tại M thì in ra -1

Ví dụ:

Input                           Output
30                              30

----------

102                             210

----------

3333333333333333333333333333    -1

Trợ lý ảo DKOJ