Đếm dãy số (chia để trị)

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

Point: 5

Cho số nguyên dương n, bạn được phép sử dụng không giới hạn các số tự nhiên từ 1 tới n. Hỏi có bao nhiêu cách chọn ra 1 dãy có tổng các phần tử bằng n.


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


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


Đầu ra: In ra đáp án của bài toán sau khi chia dư với 10^9 + 7


Input:
6
Output:
32

Kiểm tra n có phải toàn chữ số chẵn sử dụng đệ quy

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

Point: 5

Sử dụng đệ quy kiểm tra xem số nguyên dương n có chứa toàn chữ số chẵn, nếu đúng in ra 1, ngược lại in ra 0.

(bắt buộc phải sử dụng đệ quy)

Ràng buộc: Số lượng chữ số của n lớn hơn 1 và nhỏ hơn 100


Ví dụ:

Input:
24
Output:
1

Dãy con liên tiếp dài nhất có tổng chia hết cho K

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

Point: 5

Cho mảng A có N phần tử và số nguyên dương K, hãy tìm dãy con liên tiếp dài nhất có tổng các phần tử chia kết cho K. In ra số lượng phần tử của dãy con liên tiếp dài nhất nếu tồn tại hoặc in ra -1 nếu không có dãy con nào chia hết cho K


Ràng buộc: ~1 \leq K \leq N \leq 10^6~; ~-10^6 \leq A[i] \leq 10^6~


Input:
12 2
-4 1 4 -1 4 4 -3 4 2 -4 2 4
Output:
10

Number of equal

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

Point: 5

Cho 2 mảng A[] và B[] có N và M phần từ đã được sắp xếp theo thứ tự tăng dần, nhiệm vụ của bạn là hãy đếm xem trong 2 mảng tồn tại bao nhiêu cặp i,j sao cho A[i] = B[j]


Định dạng đầu vào:

Dòng đầu tiên là N và M

Dòng 2 là N số trong màng A[]

Dòng 3 là M số trong mảng B[]


Ràng buộc:

1<=N,M<=10^7

1<=A[i], B[i]<= 10^9


Định dạng đầu ra: In ra đáp án của bài toán


Input 01:
5 5
1 2 3 4 5
3 4 5 6 7
Output 01:
3
Input 02:
6 6
1 2 2 3 4 5
2 2 3 4 5 6
Output 02:
7

Trung Bình Bằng Nhau

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

Point: 5

Cho một mảng A gồm N số nguyên dương. Tìm chỉ số i (1 <= i < N) sao cho trung bình cộng của đoạn A[1...i] bằng trung bình cộng của đoạn A[i+1...N]. Nếu có nhiều chỉ số, in ra i nhỏ nhất. Nếu không có, in -1.

Gợi ý: Sum(1..i) / i == Sum(i+1..N) / (N-i) P[i] / i == (Total - P[i]) / (N - i) P[i] * (N - i) == (Total - P[i]) * i (Giải phương trình này)


Input:

Dòng đầu tiên chứa N (2 <= N <= 10^5).

Dòng thứ hai chứa N số A[i] (1 <= A[i] <= 1000).

Output:

In ra chỉ số i nhỏ nhất thỏa mãn, hoặc -1.


Ví dụ:

Input:
5
1 5 2 2 5
Output:
2

(Giải thích: Total = 15, N=5. i=1: P[1]=1. 1(5-1) == (15-1)1 -> 4 == 14 (Sai) i=2: P[2]=6. 6(5-2) == (15-6)2 -> 63 == 92 -> 18 == 18 (Đúng!) Trung bình (1, 5) là 3. Trung bình (2, 2, 5) là 9/3 = 3.)


Dãy con chung tăng dài nhất

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

Point: 5

Cho hai dãy số A (N phần tử) và B (M phần tử). Hãy tìm độ dài của dãy con chung của A và B sao cho dãy con đó là dãy tăng dần.

Dữ liệu vào:

Dòng 1: Số nguyên N (1 <= N <= 500).

Dòng 2: N số nguyên A[i].

Dòng 3: Số nguyên M (1 <= M <= 500).

Dòng 4: M số nguyên B[i].

Dữ liệu ra:

Độ dài LCIS.

Ví dụ:

Input:
5 
1 4 2 3 5 
4 
4 2 3 5
Output:
3