<21/12/2024>Xuân Bình -B53- Tìm kiếm nhị phân(1)

Tìm kiếm 1 - GCD trên mảng

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

Point: 100

Yêu cầu

Cho một dãy số ~A~ gồm ~N~ số nguyên dương và số nguyên x . Hãy viết chương trình tìm trong dãy tất cả các số có ~gcd(A_i,x) > 1~. Với gcd(x,y) là ước chung lớn nhất của x, y.

Dữ liệu

  • Dòng đầu ghi ghi hai số nguyên dương ~N, x~ (N,x ≤ 1000).
  • Dòng thứ hai ghi ~N~ số nguyên dương ~A_1, A_2, ..., A_N (A_i ≤ 1000)~.

Kết quả

  • Một dòng duy nhất ghi vị trí tất cả các số có ~gcd(A_i,x) > 1~ theo thứ tự xuất hiện trong dãy số.

Ví dụ

INPUT OUTPUT
4 3
1 3 6 2
2 3

Tìm kiếm 2 - Số xuất hiện trong mảng

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

Point: 100

Yêu cầu

Cho một dãy gồm ~N~ số nguyên dương và hai số nguyên dương ~l~ và~ r~. Hãy viết chương trình tìm những số thuộc đoạn [l,r] mà chưa có trong dãy đã cho.

Dữ liệu

  • Dòng đầu tiên ghi ba số nguyên dương ~N, l, r~ (N ≤ 10^3, l ≤ r ≤ 10^3)
  • Dòng thứ hai ghi ~N~ số nguyên ~a_1, a_2, ..., a_N (1 ≤ a_i ≤ 10^3)~.

Kết quả

In ra trên một dòng tất cả các số thuộc đoạn [l,r] mà chưa xuất hiện trong dãy số theo thứ tự tăng dần.

Ví dụ

INPUT OUTPUT
3 1 6
1 3 6
2 4 5

BS1 Tìm kiếm nhị phân 1

Nộp bài
Time limit: 30.0 / Memory limit: 640M

Point: 100

Cho dãy số a1,a2,..., a2t giá trị x. Hãy tìm xem trong dãy số có tồn tại phần tử bằng x hay không.

Input Specification

  • Dòng đầu ghi số nguyên dương ~n~ là số phần tử (0 < n <= 105).
  • Dòng 2 ghi n số nguyên dương là dãy số a1,a2 (0 < ai<= 1018)
  • Dòng 3 ghi số nguyên dương ~t (0 < t <= 10^5)~ là số test case
  • t dòng sau mỗi dòng ghi số nguyên dương ~x~ (~0< x <= 10^{18}~).

Output Specification

  • In ra t dòng, dòng thứ i ghi số kết quả tương ứng Y nếu tồn tại ~x~ trong dãy và ghi ~N~ nếu không tồn tại.

Sample Input

    10
    1 2 3 4 7 6 5 8 9 10
    5
    1
    11
    33
    10
    12

Sample Output

    Y
    N
    N
    Y
    N

BS2 - Tìm kiếm nhị phân 2: Lớn hơn x

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

Point: 100

Cho dãy số un = n2 + 1 và giá trị x. Hãy tìm phần tử của dãy số nhỏ nhất thỏa mãn lớn hơn hoặc bằng x

Để chặt nhị phân phần tử nhỏ nhất lớn hơn x ta sử dụng hàm sau:

ll  chat1(ll x)
{
    ll dau = 1, cuoi = n;
    while(dau<=cuoi)
    {
        ll giua = (dau + cuoi)/2;
        if(a[giua]>=x) 
        {
            kq = a[giua];
            cuoi = giua - 1;
        }
        else
            dau = giua + 1;
    }
    return kq;
}

Input Specification

  • Dòng đầu ghi số nguyên dương n (0 < n ≤ 106).
  • Dòng 2 ghi số nguyên dương t (0 < t ≤ 105)
  • t dòng sau mỗi dòng ghi số nguyên dương x (0< x ≤ 1012).

Output Specification

  • In ra t dòng, dòng thứ ~i~ ghi số kết quả tương ứng là phần tử nhỏ nhất của dãy số lớn hơn hoặc bằng ~x~ tương ứng.

Sample Input

10
5
1
5
10
20
50

Sample Output

2
5
10
26
50

Giải thích: Dãy đã cho được liệt kê ra như sau: 2, 5, 10, 17, 26, 37, 50, 65, 82, 101. Với 5 test x = 1, 5, 10, 20, 50 thì ta có các phần tử thỏa mãn tương ứng là: u1 = 2, ~u_2 = 5, u_3 = 10, u_5 = 26, u_7 = 50~ là các số nhỏ nhất thuộc dãy thỏa mãn lớn hơn hoặc bằng x


BS3 - Tìm kiếm nhị phân 3: Bé hơn x

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

Point: 100

Cho dãy số a1,a2,..., an và ~t~ giá trị ~x~. Hãy tìm xem trong dãy số phần tử lớn nhất bé hơn hoặc bằng ~x~.

Input Specification

  • Dòng đầu ghi số nguyên dương ~n~ là số test (~0 < n ≤ 10^5~).
  • Dòng 2 ghi n số nguyên dương là dãy số a1,a2,..., an (0 < ai ≤ 1018)
  • Dòng 3 ghi số nguyên dương ~t~ (~0 < t ≤ 10^5~)
  • t dòng sau mỗi dòng ghi số nguyên dương x (0< x ≤ 1018).

Output Specification

  • in ra ~t~ dòng, dòng thứ i ghi giá trị lớn nhất trong dãy nhỏ hơn hoặc bằng ~x~ và ghi ~-1~ nếu không tồn tại.

Sample Input

10
2 11 3 4 7 6 5 8 9 10
3
2
12
1

Sample Output

2
11
-1

BS4 - TKNP : Trị tuyệt đối

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

Point: 100

Cho dãy số ~a_1,a_2,..., a_n~ và giá trị ~x~. Hãy tìm giá trị nhỏ nhất của ~|a_i - x|~ với mọi giá trị ~i~.

Input Specification

  • Dòng đầu ghi số nguyên dương ~n (0 < n ≤ 10^5).~
  • Dòng 2 ghi ~n~ số nguyên là dãy số ~a_1, a_2, ..., a_n (0 < |a_i| ≤ 10^{12})~
  • Dòng 3 ghi số nguyên dương ~t (0 < t \le 10^5)~
  • t dòng sau mỗi dòng ghi số nguyên ~x (0< |x| \le 10^{12}).~

Output Specification

  • in ra t dòng, mỗi dòng ghi giá trị nhỏ nhất của ~|a_i - x|~, với ~i=1 --> n~ cho giá trị ~x~ tương ứng.

Sample Input

    5
    1 7 9 8 12
    1
    5

Sample Output

    2

BS5 - Tìm kiếm nhị phân 5: Tìm nghiệm

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

Point: 100

Yêu cầu

Cho hàm ~f(n) = n^3 - 2n + 5~ và giá trị ~K~, hãy giải phương trình nghiệm nguyên không âm f(n) = K.

Input Specification

  • Dòng đầu ghi số nguyên dương ~Q (0 < Q ≤ 10^5).~
  • Q dòng tiếp theo mỗi dòng ghi một số nguyên dương ~K~ ~(1< K ≤ 10^{18}).~

Output Specification

  • in ra Q dòng, mỗi dòng ghi giá trị giá trị nghiệm của phương trình nghiệm nguyên f(n) = K, nếu không tồn tại nghiệm thì ghi ra -1.

Sample Input

2
9
10

Sample Output

2
-1

BS6 - Mua kẹo

Nộp bài
Time limit: 2.0 / Memory limit: 640M

Point: 100

Nam rất thích ăn kẹo mút nên ngày nào đi học cậu ta cũng đến các quán kẹo để tận hưởng những cảm giác ngọt ngào của những chiếc kẹo. Trong thành phố có n quán có bán kẹo mút với nhiều hương vị và giá thành khác nhau, giá bán ở quán thứ i là xi ~(1 ≤ i ≤ n)~. Nam lên kế hoạch mua kẹo trong q ngày tiếp theo, ngày thứ j (1 ≤ j ≤ q) không được sử dụng quá số tiền tj để mua kẹo.

Yêu cầu

Hãy xác định số lượng quán khác nhau Nam có thể đến mua kẹo trong ngày thứ j.

Dữ liệu

  • Dòng đầu ghi số nguyên dương ~n (1 ≤ n ≤ 10^6)~;
  • Dòng thứ hai ghi n số nguyên dương ~x_1, x_2, ... , x_n~ (1 ≤ x_i ≤ 100,000,000).
  • Dòng thứ ba ghi số nguyên dương q (1 ≤ q ≤ 100.000).
  • Dòng thứ j trong q dòng tiếp theo ghi số nguyên ~t_j (1 ≤ t_j ≤ 1,000,000,000)~.

Kết quả

In ra q dòng, dòng thứ j ghi số lượng quán khác nhau cẩ ngày thứ j Nam có thể mua kẹo.

Ví dụ

INPUT OUTPUT
5
3 10 8 6 11
4
1
10
3
11
0
4
1
5

Ghi chú

  • Có 40% test có n, q ≤ 2000 tương ứng 40% số điểm;
  • Có 60% test có 2000 < n ≤ 100.000 tương ứng 60% số điểm

BS7- Tìm nghiệm nguyên

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

Point: 100

Yêu cầu

Cho t phương trình có dạng ax^3 + bx^2 + cx + d= y với a, b, c, d là số nguyên dương thỏa mãn f(x) = ax^3 + bx^2 + cx + d là hàm đồng biến, hãy tìm nghiệm x nhỏ nhất lớn hơn 0 thỏa mãn phương trình biết rằng với các điều kiện của đề bài thì khi giá trị của x càng lớn tương đương với việc giá trị của f(x) cũng tăng theo. Biết phương trình luôn có nghiệm nguyên dương, hãy tìm nghiệm đó.

Dữ liệu

  • Dòng đầu tiên ghi số nguyên dương t (1 ≤ t ≤ 10^5).
  • t dòng tiếp theo mỗi dòng ghi 5 số nguyên dương a, b, c, d, y (a, b, c, d ≤ 50 , y ≤ 10^{18}).

Kết quả

Ứng với mỗi testcase, in ra trên một dòng nghiệm x thỏa mãn phương trình, nếu không có in ra -1.

INPUT

1
3 4 5 6 56

OUTPUT

2

BS8 - TKNP- 3 cạnh tam giác

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

Point: 100

Cho dãy số A gồm n phần tử nguyên dương a1, a2, ..., an. Mỗi phần tử có giá trị không vượt quá 10^9 và 1 < n ≤ 5000. Một bộ ba số được gọi là bộ số tam giác, nếu ba số này tạo thành ba cạnh của một tam giác nào đó. Nghĩa là a, b, c là một bộ số tam giác khi và chỉ khi a + b > c, a + c > b, b + c > a.

Yêu cầu

  • Hãy đếm xem trong dãy A có bao nhiêu bộ số tam giác (ai, aj, ak) với i, j, k đôi một khác nhau.

Dữ liệu

  • Dòng đầu là số n;
  • Dòng tiếp theo là các phần tử của dãy $A$, mỗi phần tử cách nhau một dấu cách.

Kết quả

  • In ra số lượng bộ tam giác từ trong dãy A.

Ví dụ

INPUT OUTPUT GIẢI THÍCH
5
4 3 1 5 7
3 Ba bộ số tam giác gồm: (4, 3, 5), (4, 5, 7), (3, 5,7).

Ràng buộc:

  • Có 30% số test ứng với 30% số điểm của bài có n ≤ 100.
  • Có 30% số test ứng với 30% số điểm của bài có 100<n ≤ 1000</strong>.
  • Có 40% số test ứng với 40% số điểm của bài có 1000<n ≤ 5000</strong>.