Kami akan membincangkan nombor segi tiga dan cara mencari nombor segi tiga terkecil yang hanya lebih besar daripada nombor "num" yang diberikan. Mari kita bincangkan dahulu apakah nombor trigonometri, dan kemudian cari nombor trigonometri terkecil yang lebih besar daripada "bilangan"
Kita akan melihat dua pendekatan berbeza untuk masalah yang sama. Dalam kaedah pertama kita akan menjalankan gelung mudah untuk menjana output, manakala dalam kaedah kedua kita akan mula-mula menjana formula umum untuk mengira nombor yang diperlukan dan kemudian terus menggunakan formula itu untuk mendapatkan nombor Segitiga minimum. p>
Kita perlu mencari bilangan segitiga terkecil yang hanya lebih besar daripada "num".
Kami mempunyai beberapa kotak dengan bola. Bilangan bola yang terkandung dalam kotak adalah nombor segi tiga yang berbeza untuk semua kotak. Kotak-kotak itu bernombor dari 1 hingga n. Kita perlu mengetahui kotak mana yang akan mengandungi bilangan bola minimum selepas mengeluarkan bola "bilangan" dari kotak.
Mari kita fahami ini melalui contoh
Input number was: num = 5
Kita perlu mengetahui kotak mana yang mempunyai bilangan bola paling sedikit selepas mengeluarkan 5 bola
Output:3rd box will contain a minimum of balls after removing 4 balls.
Penyelesaian untuk contoh ini -
Boxes with number of balls: {1 3 6 10 ....} Box 3 will contain only 1 ball after removing 4 balls from it.
Nombor segi tiga ialah nombor yang boleh diwakili dalam bentuk grid segi tiga sama sisi. Bilangan mata dalam satu baris sentiasa sama dengan nombor baris, iaitu baris pertama akan mengandungi 1 mata, baris kedua akan mengandungi 2 mata, dan seterusnya. Beberapa nombor segi tiga ialah: 1, 3, 6, 10, 15…. Sekarang mari kita terbitkan formula untuk nombor segi tiga ke-
Kita tahu bahawa baris ke-n bagi nombor segi tiga mengandungi n mata, jadi nombor segi tiga boleh dinyatakan sebagai jumlah mata dalam setiap baris. Kita juga tahu bahawa nombor trigonometri ke-n mempunyai n baris, jadi nombor trigonometri ke-n boleh diberikan dengan hasil tambah n nombor asli pertama.
Dalam kaedah ini kita akan menjalankan gelung dan mengira perbezaan antara nombor yang diberikan dan nombor trigonometri ke-n, apabila kita mendapat perbezaan >= 0 kita akan mendapat nombor kotak yang diperlukan supaya kita akan memotong gelung. < /p>
Untuk nombor trigonometri, kami akan terus menambah n pada nombor trigonometri ke (n-1) sedia ada untuk mengira nilai nombor trigonometri seterusnya.
Langkah 1 - Mulakan pembolehubah nombor_segi tiga kepada 0.
Langkah 2 - Jalankan gelung for dan terus tambah n untuk setiap lelaran.
Langkah 3 - Teruskan mengira perbezaan antara nombor segi tiga dengan nombor "num" yang diberi.
Langkah 4 - Bila dah dapat perbezaan >=0, kita akan print n sebagai nombor kotak yang dikehendaki.
Perlaksanaan kaedah ini dalam C++ adalah seperti berikut -
#include <iostream> using namespace std; int main(){ int num = 1234; int triangular_number = 0; for (int n=1; triangular_number<=num; n++){ triangular_number = triangular_number + n; if((triangular_number-num)>=0){ cout<<"The smallest triangular number larger than "<<num<<" is "<<n; return 0; } } }
The smallest triangular number larger than 1234 is 50
Dalam kaedah ini kita mula-mula menjana formula am untuk mengira nombor yang diperlukan dan kemudian terus menggunakan formula untuk mendapatkan bilangan segitiga terkecil yang hanya lebih besar daripada nombor yang diberikan.
Nombor segi tiga nombor kotak ke-n diberi oleh -
Triangular number = (n*(n+1))/2
Dapatkan nombor kotak terkecil "n" supaya bilangan segi tiga >= nombor.
i.e. (n*(n+1))/2 >= num
Ini bermakna kita kena selesaikan -
n<sup>2</sup> + n – 2*num >= 0
Menggunakan persamaan ini, kita mendapat
n = ceil( (sqrt(8*num+1)-1)/2 )
Kod untuk kaedah ini diberikan di bawah -
#include<bits/stdc++.h> using namespace std; int boxnum(int num){ return ceil( ( sqrt( 8*num + 1 ) -1 ) / 2 ) ; } int main(){ int num = 1234 ; cout << "The smallest triangular number larger than "<<num<<" is "<<boxnum(num); return 0; }
The smallest triangular number larger than 1234 is 50
Kerumitan masa kaedah ini - O(logn)
Kerumitan Ruang - O(1) kerana kami hanya menggunakan ruang tambahan yang berterusan.
Dalam artikel ini, kami membincangkan dua kaedah berbeza untuk mencari bilangan segitiga terkecil yang hanya lebih besar daripada nombor "num" tertentu. Kaedah pertama hanya mengira nombor trigonometri dengan menjalankan gelung dan menambah n untuk setiap lelaran. Kami juga mengira perbezaan antara nombor yang diberikan dan nombor trigonometri. Dalam pendekatan kedua, kami menjana formula matematik untuk mengira output yang kami kehendaki.
Atas ialah kandungan terperinci Nombor segi tiga terkecil lebih besar daripada p. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!