Trang chủ Tin Học Lớp 12 Đề bài: Một trang trại lớn có n cây cảnh...

Đề bài: Một trang trại lớn có n cây cảnh với độ cao khác nhau từng đôi. Các cây này được xếp theo một hàng dọc. Ông chủ trang trại là người có đầu óc thẩm mỹ

Câu hỏi :

Đề bài: Một trang trại lớn có n cây cảnh với độ cao khác nhau từng đôi. Các cây này được xếp theo một hàng dọc. Ông chủ trang trại là người có đầu óc thẩm mỹ nên hàng cây được bố trí có tính chất không đơn điệu sau đây: “Đi từ đầu hàng đến cuối hàng không có 3 cây (không nhất thiết phải liên tiếp) có chiều cao giảm dần”. Một hôm ông chủ mua thêm một cây cảnh mới có chiều cao lớn hơn chiều cao của tất cả các cây đã có. Ông ta muốn xếp cây cảnh mới vào một trong `n +1` vị trí có thể của hàng cây đang có (vào vị trí đầu hàng, vị trí sau cây thứ nhất của hàng, vị trí sau cây thứ hai của hàng, ..., vị trí sau cây thứ n của hàng) sao cho hàng cây thu được vẫn thỏa mãn yêu cầu về tính không đơn điệu nêu trên. `--` Yêu cầu: - Hãy cho biết có bao nhiêu cách xếp cây cảnh cao nhất mới mua vào hàng cây sao cho vẫn đảm bảo điều kiện về tính không đơn điệu. - Giả sử mỗi ngày ông chủ muốn xếp `n+1` cây đã có thành hàng cây đảm bảo yêu cầu về tính không đơn điệu và hai hàng cây của hai ngày khác nhau là không trùng nhau, hãy giúp ông chủ tính xem việc đó có thể diễn ra nhiều nhất là bao nhiêu ngày. `--` Dữ liệu: Vào từ file văn bản TREELINE.INP - Dòng thứ nhất chứa hai số nguyên dương n và h tương ứng là số lượng cây và chiều cao của cây cao nhất. Biết rằng `n ≤ 10^5, h ≤ 10^6`. - Dòng thứ hai chứa n số nguyên dương (mỗi số đều nhỏ hơn h) tương ứng là dãy chiều cao của n cây được xếp ban đầu. Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách. `--` Kết quả: Ghi ra file văn bản TREELINE.OUT - Dòng thứ nhất ghi một số nguyên là số cách xếp cây cao nhất vào hàng cây. - Dòng thứ hai ghi một số nguyên là phần dư trong phép chia số ngày lớn nhất tìm được cho `10^9`. `--` Ví dụ: (Hình ảnh) `--` Viết chương trình Pascal theo đề bài trên. *YC: - Đầy đủ, chính xác, chắc chắn, dễ hiểu. - Sai yêu cầu, bắt buộc sửa trong 48h, sau 48h câu trả lời sẽ bị xóa. - Up cả bài đã chạy chương trình. (Trên file, chụp cả input cả output) - Có hành vi spam, sao chép, nhằm ăn điểm. Câu trả lời sẽ bị xóa. NL: Đã đổi đề, khum làm được thì thôi =)) 60đ này ăn khum dễ :3 `--` $\text{Good luck}$ $\heartsuit$

image

Lời giải 1 :

const fi = 'TREELINE.INP';
    fo = 'TREELINE.OUT';
    MODD = trunc(1e9);
var n,h,ans,i:longint;
    s:string;
    a:array[1..100000] of longint;

function times(a:string; b:longint):string;
var i,carry,sum:longint;
    ans,tmp:string;
begin
    ans:=''; carry:=0;
    for i:=length(a) downto 1 do
        begin
            sum:=(ord(a[i]) - 48) * b + carry;
            carry:=sum div 10;
            ans:=chr(sum mod 10 + 48) + ans;
        end;
    if(carry > 0) then str(carry,tmp) else tmp:='';
    exit(tmp + ans);
end;

function divide(a:string; b:longint):string;
var tmp,i,hold:longint;
    ans:string;
begin
    ans:=''; hold:=0; tmp:=0;
    for i:=1 to length(a) do
        begin
            hold:=hold * 10 + ord(a[i]) - 48;
            tmp:=hold div b;
            hold:=hold mod b;
            ans:=ans + chr(tmp + 48);
        end;
    while(length(ans) > 1) and (ans[1] = '0') do delete(ans, 1, 1);
    exit(ans);
end;

begin
    assign(input,fi); reset(input);
    assign(output,fo); rewrite(output);
    
    read(n,h);
    for i:=1 to n do read(a[i]);

    ans:=2;
    for i:=n - 1 downto 1 do
        if(a[i] < a[i + 1]) then inc(ans) else break;
    writeln(ans);

    s:='1';
    inc(n);
    for i:=n + 2 to 2 * n do s:=times(s,i);
    for i:=1 to n do s:=divide(s,i);
    val(s,ans);
    writeln(ans mod MODD);

    close(input); close(output);
end.

image
image

Thảo luận

-- được 6 test luôn :)) ghê v :))
-- Bí thuật 👁👁
-- Ủa chứ không phải xuất ra file hã '-'
-- Em nộp bài online xem bài mình đến đâu thoi '-'

Lời giải 2 :

// Buon buon nen lam` thoi :D

type int = longint;
     long = int64;
const maxn = trunc(1e5);
      MODD = trunc(1e9);
      lim = maxn * 2;
      fi = 'TREELINE.INP';
      fo = 'TREELINE.OUT';
var pr, pow: array[0..lim] of long;
    a: array[0..maxn] of int;
    np: array[0..lim] of boolean;
    i, n, h, cnt: int;

procedure sieve;
var i, j:int;
begin
    for i:=2 to trunc(sqrt(lim)) do
        if not np[i] then
            for j:=i to lim div i do
                np[i * j]:=true;
    for i:=2 to lim do
        if not np[i] then
            begin
                inc(cnt);
                pr[cnt]:=i;
            end;
end;

function powmod(a, n: long):long;
var res: long;
begin
    res:=1;
    while n <> 0 do
        begin
            if n and 1 = 1 then res:=(res * a) mod MODD;
            a:=(a * a) mod MODD;
            n:=n shr 1;
        end;
    exit(res);
end;

procedure analysis(n: long; decrease: boolean);
var i: int;
    x: long;
begin
    for i:=1 to cnt do
        begin
            x:=pr[i];
            while x <= n do
                begin
                    if decrease then dec(pow[i], n div x)
                                else inc(pow[i], n div x);
                    x:=x * pr[i];
                end;
        end;
end;

procedure calc;
begin
    sieve; inc(n);
    analysis(2 * n, false);
    analysis(n + 1, true);
    analysis(n, true);
end;

procedure solve;
var i, ans: int;
    res: long;
begin
    ans:=2;
    for i:=n - 1 downto 1 do
        if a[i] < a[i + 1] then inc(ans)
                           else break;
    writeln(ans);

    calc; res:=1;
    for i:=1 to cnt do
        res:= (res * powmod(pr[i], pow[i])) mod MODD;
    writeln(res);
end;

begin
    assign(input, fi);reset(input);
    assign(output, fo);rewrite(output);
    readln(n, h);
    for i:=1 to n do read(a[i]);
    solve;
    close(input);close(output);
end.

image
image

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, 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 (ảo). Với cách hiểu hiện nay, 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.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 12

Lớp 12 - Năm cuối ở cấp tiểu học, năm học quan trọng nhất trong đời học sinh trải qua bao năm học tập, bao nhiêu kì vọng của người thân xung quanh ta. Những nỗi lo về thi đại học và định hướng tương lai thật là nặng. Hãy tin vào bản thân là mình sẽ làm được rồi tương lai mới chờ đợi các em!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK