Số lớn thứ k trong chuyên gia gán python

4. Viết chương trình tìm phần tử nhỏ thứ k trong mảng chưa sắp xếp?
Bạn được cho một mảng số và k chưa sắp xếp, bạn cần tìm số nhỏ thứ k trong mảng. Ví
ví dụ nếu mảng đã cho là {1, 2, 3, 9, 4} và k=2 thì bạn cần tìm số nhỏ thứ 2 trong mảng,
which is 2.

Câu hỏi -. Số nguyên dương d được gọi là ước của số nguyên dương N khác nếu khi chia N cho d được số dư bằng 0. Ví dụ số 12 có 6 thừa số là 1, 2, 3, 4, 6, 12. Mọi số nguyên dương k đều có ít nhất hai ước là 1 và chính số k. Cho hai số nguyên dương N và k, viết chương trình in ra thừa số lớn thứ k của N

Định dạng đầu vào. Đầu vào là danh sách các cặp số nguyên dương được phân tách bằng dấu phẩy [N, k]

Định dạng đầu ra. Hệ số cao thứ k của N. Nếu N không có k thừa số thì đầu ra phải là 1

Hạn chế

Bạn có thể giả sử rằng N sẽ không có thừa số nguyên tố nào lớn hơn 13

ví dụ 1

Giải trình. N là 12, k là 3. Thừa số của 12 là [1,2,3,4,6,12]. Yếu tố cao nhất là 12 và yếu tố lớn thứ ba là 4. Đầu ra phải là 4

ví dụ 2

Giải trình. N là 30, k là 9. Thừa số của 30 là [1,2,3,5,6,10,15,30]. Chỉ có 8 yếu tố. Vì k nhiều hơn số thừa số nên đầu ra là 1

Tiếp cận. Ý tưởng là kiểm tra từng số trong phạm vi [N, 1] và in ra số thứ K chia hết cho N

Lặp qua vòng lặp từ N đến 0. Bây giờ, với mỗi số trong vòng lặp này

  • Kiểm tra xem nó có chia hết N hay không
  • Nếu N chia hết cho số hiện tại, hãy giảm giá trị của K đi 1
  • Khi K trở thành 0, điều này có nghĩa là số hiện tại là thừa số lớn thứ K của N
  • In đáp án theo quan sát trên

Dưới đây là việc thực hiện các phương pháp trên

C




4
88

 

4
89

 

4
90

4
91

4
92
4
93
4
92
4
95
4
92
4
1

4
2

 

4
3____04

4
3____06

4
3
4
8
4
9
4
92
4
881

 

4
882
4
883

________ 1882 ________ 1885 ________ 1886

 

4
887
4
888

4
887
4
890

 

4
882
4
892

4
882
4
894

4
882
4
896

4
882
4
885
4
899

________ 1887 ________ 1901 ________ 1902

4
882
4
904

4
3____1904

 

4
3____1908

4
3____1910

4
3____1901
4
913

4
904

 

4
915

4
92
4
917

4
2

4
3____192
4
921

4
3______1923
4
9
4
925
4
926

4
3____1901
4
929

4
904

C++




4
931

 

4
932

4
933
4
934
4
935

 

4
90

4
91

4
92
4
93
4
92
4
95
4
92
4
1

4
2

4
3____04

4
3____06

4
3
4
8
4
9
4
92
4
881

 

4
882
4
883

________ 1882 ________ 1885 ________ 1886

 

4
887
4
888

4
887
4
890

 

4
882
4
892

4
882
4
894

4
882
4
896

4
882
4
885
4
899

________ 1887 ________ 1901 ________ 1902

4
882
4
904

4
3____1904

 

4
3____1908

4
3____1910

4
3____1901
4
913

4
904

 

4
915

4
92
4
917

4
2

4
3____192
4
921

4
3
4
35

4
904

Java




4
37

 

________ 038 ________ 039

 

4
40
4
41

 

_______03____190

4
3____191

4
3
4
47
4
92
4
93
4
92
4
95
4
92
4
1

4
3____02

4
882
4
4

4
882
4
6

4
882
4
8
4
9
4
92
4
64
4
65
4
66

 

4
887
4
883

4
887
4
885
4
71
4
65
4
73

 

4
74
4
888

4
74
4
890

 

4
887
4
892

4
887
4
894

4
887
4
896

4
887
4
885
4
86
4
65
4
88

4
74
4
901
4
902

4
887
4
904

4
882
4
904

 

4
882
4
908

4
882
4
910

4
882
4
901
4
8802
4
8803
4
8804

4
3____1904

 

4
3____1915

4
3____18810
4
47
4
8812
4
8813

4
3____02

4
882
4
92
4
8818
4
8819
4
8820
4
8821
4
8804

4
882
4
8824

4
3____1904

4
904

con trăn




4
8828

 

4
8829

4
8830

4
8831
4
8832

4
3
4
8
4
8835
4
8836
4
8837
4
8838
4
65
4
8840
4
8802
4
8803
4
8843

4
882
4
885
4
8846
4
8847
4
8835
4
8849
4
8849
4
65
4
8852

4
887
4
8854
4
8802
4
8849
4
8803

4
882
4
885
4
8854
4
8849
4
8849
4
65
4
8852

4
887
4
901
4
8835

4
3____1901
4
8802
4
8803

 

 

4
8872

4
8846
4
8849
4
8819

4
8854
4
8849
4
8821

4
8879
4
8880

C#




4
8881

4
933
4
8883

4
933
4
8885

 

4
40
4
8887

 

4
90

4
91

4
47
4
92
4
93______192
4
95
4
92
4
1

4
2

 

4
3____04

4
3____06

4
3
4
8
4
9
4
92
4
881

 

4
882
4
883

________ 1882 ________ 1885 ________ 1886

 

4
887
4
888

4
887
4
890

 

4
882
4
892

4
882
4
894

4
882
4
896

4
882
4
885
4
899

________ 1887 ________ 1901 ________ 1902

4
882
4
904

4
3____1904

 

4
3____1908

4
3____1910

4
3____1901
4
913

4
904

 

4
915

4
8810
4
47
4
8812
4
8944

4
2

4
3____192
4
921

_______03____18950

4
904

4
904

 

4
8953

Javascript




4
8954

4
8955

4
90

4
91

4
8958
4
8959

4
3____02

4
882
4
4

4
882
4
6

4
882
4
8
4
8968

 

4
887
4
883

________ 1887 ________ 1885 ________ 1886

 

4
74
4
888

4
74
4
890

 

4
887
4
892

4
887
4
894

4
887
4
896

4
887
4
885
4
899

4
74
4
901
4
902

4
887
4
904

4
882
4
904

 

4
882
4
908

4
882
4
910

4
882
4
901
4
913

4
3____1904

 

4
915

4
9004

4
9005

4
882

4
9007

4
9008

Đầu ra

4

Độ phức tạp về thời gian.


Không gian phụ.

Phương pháp tiếp cận hiệu quả. Vấn đề có thể được giải quyết theo cách tối ưu hóa với độ phức tạp sqrt[n] bằng cách sử dụng thực tế là thừa số của bất kỳ số nào vẫn ở dạng cặp. Nói cách khác, nếu tôi là thừa số của số n thì n/i cũng sẽ là thừa số của n. Vì vậy, để tìm tất cả các thừa số của một số, chúng ta cần kiểm tra các thừa số cho đến sqrt[n] và các cặp tương ứng của chúng. Một kiểu tiếp cận tương tự được sử dụng trong bài viết. tìm ước của số tự nhiên

Hình minh họa.
Nếu n = 80 thì tất cả các cặp ước khác nhau có thể có là. [1,80], [2,40], [4,20], [5,16], [8,10]. Do đó để lưu trữ tất cả các thừa số của 80, chúng ta sẽ lặp vòng lặp từ 1 đến √80 ≈ 8 và lưu trữ các thừa số trong phạm vi [trong trường hợp này bao gồm 1,2,4,5,8 ở đây]. Sau đó, chúng tôi chạy một vòng lặp ngược lại và lưu trữ các cặp thừa số trước đó [sẽ cho 10, 16, 20, 40 và 80]. Ở đây chúng tôi đang chạy một vòng lặp ngược lại để chúng tôi có thể nhận được các cặp theo thứ tự tăng dần. Bằng cách này, chúng tôi sẽ nhận được tất cả các yếu tố bao gồm {1, 2, 4, 5, 8, 10, 16, 20, 40 và 80}.

Tiếp cận

  1. Khởi tạo một vector để lưu trữ các phần tử theo thứ tự tăng dần
  2. Đầu tiên, lặp lại một vòng lặp từ 1 đến sqrt[n] và lưu trữ tất cả các yếu tố
  3. Sau đó lặp lại vòng lặp theo thứ tự ngược lại và với mỗi yếu tố lưu trữ cặp tương ứng của nó. Vì vậy, nếu tôi là thừa số thì lưu trữ n/i
  4. Nếu kích thước của vectơ lớn hơn hoặc bằng k thì trả về hệ số lớn thứ k [sẽ là v[v. size[]-k] vì vectơ v có thứ tự tăng dần]
  5. Nếu k phần tử không tồn tại có nghĩa là không có phần tử lớn thứ k và do đó trả về -1

Xử lý các trường hợp góc.
Trường hợp góc sẽ phát sinh khi bất kỳ thừa số nào cũng chính xác bằng sqrt[n]. Ví dụ: nếu n=100, thì trong trường hợp này 10 sẽ là thừa số của số và cặp tương ứng của nó cũng là 10 dưới dạng [10*10=100]. Vì vậy, trong trường hợp này 10 sẽ được thực hiện hai lần. Để giải quyết trường hợp này, chúng tôi sử dụng câu lệnh if giữa hai vòng lặp và loại bỏ vấn đề bằng cách chỉ xem xét yếu tố này một lần.

Dưới đây là việc thực hiện các phương pháp trên

C++




4
931

4
9010

4
933
4
934
4
935

 

4
90

4
91

4
92
4
93
4
92
4
9019
4
92
4
9021

4
2

_______03____19024

_______03____19026

4
3____19028
4
92
4
9030

4
3____192
4
902

 

4
3____19035

4
3____19037

4
3
4
8
4
9040

4
882
4
885
4
9043

4
887
4
9045

4
3____1904

 

4
3____19049

4
3____1885
4
9052

4
882
4
9054

4
3____1904

 

4
3____08
4
9059

4
882
4
885
4
9043

4
887
4
9064

4
3____1904

 

4
3____19068

4
3____19070

4
3____19072

4
3____19074

4
3____19076

4
3____1885
4
9079

________ 1882 ________ 1901 ________ 19082

4
3____1904

 

_______03____19086

_______03____19088

4
3____19090

4
882
4
901
4
913

4
904

 

4
915

4
92
4
917

4
2

4
3____192
4
921

4
3
4
35

4
904

 

4
9105

Java




________ 038 ________ 039

4
38
4
9109

4
8810
4
40
4
9112

4
2

4
9114

4
9114
4
90

4
9114
4
91

4
9114
4
47
4
92
4
93
4
92
4
9019
4
92
4
9021

4
9114
4
2

4
3

_______03____19024

_______03____19026

4
3____19135____19136
4
9137

4
3____192
4
902

 

4
3____19035

4
3____19037

4
3
4
8
4
9147
4
8803
4
9149

4
9150
4
885
4
9152
4
65
4
73

4
882
4
9156

4
3____1904

 

4
3____19049

4
3____1885
4
9052

4
9150
4
9054

4
3____1904

 

4
3
4
8
4
9170
4
8803
4
66

4
9150
4
885
4
9152
4
65
4
73

4
882
4
9179

4
3____1904

 

4
3____19068

4
3____19070

4
3____19072

4
3____19074

4
3____19076

4
3____1885
4
9079

4
9150
4
901
4
9197

4
3____1904

 

_______03____19086

_______03____19088

4
3____19090

4
9150
4
901
4
8802
4
8803
4
8804

4
9114
4
904

 

4
9114
4
8810
4
47
4
8812
4
8813

4
9114
4
2

4
3____192
4
8818
4
8819
4
8820
4
8821
4
8804

_______03____18824

4
9114
4
904

4
904

 

4
9232

Python3




4
8828

4
38
4
9235

 

4
9236

4
8830

4
8831
4
9239

4
9114

_______03____19242

4
3____19244

4
3____19246
4
8849
4
9248

 

4
3____19250

4
3____19252

4
3____18835____18849
4
8803

4
3____19258
4
8849
4
9260

4
3
4
8
4
9263
4
8836
4
8837
4
9306
4
65
4
8840
4
8802
4
8803
4
8843

Chủ Đề