Trang chủ Tin Học Lớp 8 Thầy Phú phát kẹo cho các em học sinh theo qui tắc sau: Em đầu tiên được nhận 1 viên...
Câu hỏi :

Thầy Phú phát kẹo cho các em học sinh theo qui tắc sau: Em đầu tiên được nhận 1 viên kẹo, em tiếp theo nhận nhiều hơn em trước đó 3 viên. Lớp có N học sinh tuy nhiên Thầy chỉ mang theo K cái kẹo thôi. Bạn hãy tính giúp thầy số lượng học sinh nhiều nhất nhận được kẹo. Thầy Phú rất nguyên tắc nên phát đúng theo quy định trên, kẹo còn thừa không đủ để phát theo quy tắc trên thì Thầy đem về cho cu Sắn.Lập trình c++(ai làm được mình sẽ tạo 1 câu 1+1 30điểm tặng thêm nha)

Lời giải 1 :

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
 long long n, k;
 cin >> n >> k;
 cout << min(n, (long long) ((1 + sqrt(24.0*k + 1)) / 6));
}
    

Lời giải 2 :

`* C++:`

`" "`

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    long long N, K;
    cin >> N >> K;
    
    double quan = (0.5 + sqrt(0.25 + 6 * K)) / 3;
    cout << int(quan);
    
    return 0;
}

`" "`

`*` Số lượng kẹo của học sinh thứ `1` đến `n` tạo thành cấp số cộng với công sai `d = 3`

`*` Em đầu tiên nhận được `1` viên kẹo: `u_1 = 1`

`*` Em tiếp theo nhận nhiều hơn em trước đó 3 viên: `d = 3`

`*` `u_n`: Số kẹo người cuối cùng thứ `n` nhận được

`*` Số kẹo thầy mang: `K` (K là 1 số nguyên dương)

`" " `

`*` Theo nguyên tắc phát đúng, tổng số kẹo thầy Phú đã phát để không thừa cho người tiếp theo: `S`  `(S ≤ K)`

`*` Với số hạng đầu bằng `u_1`, công sai `d`, số hạng cuối `u_n` thì tổng từ `u_1` đến `u_n` là `S =` `n.u_1 + (n(n - 1)) / 2 . d ` với n là số nguyên có giá trị lớn nhất sao cho `S ≤ K`

`*` `S = n.1 + (n(n - 1)) / 2 . 3` `→ n + (n(n - 1)) / 2 . 3 ≤ K`

`" "`

`*` Xét phương trình:  `y = 3/2n^2 - 1/2n - K `

      `*` `Δ = b^2 - 4ac = (-1/2)^2 - 4(3/2)(-K)  = 1 / 4 + 6K > 0` (Vì `K` là `1` số nguyên dương)

      `*` Vì `Δ > 0` nên phương trình luôn có hai nghiệm là `n_1` và `n_2`

      `*` Với:

            `*` `n_1 = (-(-1/2) - sqrt(Δ)) / (2.(3/2)) = (1 / 2 -  sqrt(1 / 4 + 6K )) / 3`

            `*` `n_2 = (-(-1/2) + sqrt(Δ)) / (2.(3/2)) = (1 / 2 + sqrt(1 / 4 + 6K )) / 3`

            `*` Hệ số `a = 3/2 > 0`

      `*` Lập bảng xét dấu (Quy tắc trong trái ngoài cùng): 

            `*` `y > 0` với `∀n ∈ (-∞; n_1) ∪ (n_2; +∞)`

            `*` `y = 0` với `n = n_1` và `n = n_2`

            `*` `y < 0` với `∀n ∈ (n_1; n_2)`

`" "`

`*` Xét phương trình: `3/2n^2 - 1/2n - K≤ 0`

      `*` Để `3/2n^2 - 1/2n - K = 0` thì `n = n_1` hoặc `n = n_2`, vì `n` là số thứ tự cuối cùng của người được phát kẹo nên `n` phải là `1` số nguyên, vì `K` cũng là `1` giá trị nguyên nên `n_1` và `n_2` không thể mang giá trị nguyên

      `*` Trường hợp còn lại: `3/2n^2 - 1/2n - K< 0`, `n ∈ (n_1; n_2)`. Vậy n là số nguyên lớn nhất nhỏ hơn `n_2` để là số thứ tự người cuối cùng được phát kẹo

`" "`

`*` Nếu số kẹo dư để phát cho N người thì đưa ra giá trị N, ngược lại in gia trị nguyên lớn nhất nhỏ hơn `n_2`

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK