tháng 2 2022

Trong kỳ thi lập trình, có n thí sinh tham gia. Các thí sinh được đánh số thứ tự từ 1 đến n. Kết quả chung cuộc thí sinh i đạt được điểm số ai.

            Yêu cầu: Với mỗi thí sinh, hãy cho biết có bao nhiêu thí sinh có cùng thứ hạng với mình (kể cả chính thí sinh đó).

            Dữ liệu vào: Cho từ tệp văn bản THUHANG.INP gồm hai dòng:

·    Dòng thứ nhất ghi số nguyên dương n (2<=n<=10^5).    

·    Dòng thứ hai ghi n số nguyên a1, a2, …, an ­là điểm số của các thí sinh (1 <=ai<=10^9).

            Kết quả: Ghi ra tệp văn bản THUHANG.OUT gồm một dòng ghi n số nguyên, số thứ i cho biết số thí sinh có cùng thứ hạng với thí sinh thứ i (kể cả thí sinh thứ i).

Ví dụ:

THUHANG.INP

THUHANG.OUT

9

6 7 1 6 7 4 5 4 7

2 3 1 2 3 2 1 2 3

            Giải thích: Thí sinh thứ nhất và thí sinh thứ tư đạt 6 điểm, có 2 thí sinh cùng 6 điểm nên cùng thứ hạng. Thí sinh thứ hai, thứ năm và thứ chín cùng đạt 7 điểm, 3 thí sinh này đồng hạng,…

            Giới hạn:

·    Có 40% số test tương ứng 40% số điểm có giá trị n<=103 và 1<=ai<=10^3).

·    Có 40% số test tương ứng 40% số điểm có giá trị n<=105 và 1<=ai<=10^6)

·   Có 20% số test tương ứng 20% số điểm có giá trị n<=105 và 1<=ai<=10^9).


CODE THAM KHẢO:


Program Thu_Hang;

Const fin  = 'THUHANG.INP';

      fout = 'THUHANG.OUT';

Var n,i,j,dem:Longint;

    a:array[1..100000] of Longint;

    f:Text;

Begin

  Assign(f,fin);

  Reset(f);

  Read(f,n);

  For i:=1 to n do Read(f,a[i]);

  Close(f);

  Assign(f,fout);

  ReWrite(f);

  For i:=1 to n do

    Begin

      dem:=0;

      For j:=1 to n do

        If a[i]=a[j] then dem:=dem+1;

      Write(f,dem,' ');

    End;

  Close(f);

End.




Để chuẩn bị cho khoá học lập trình trong hè, bạn Nam đã đến cửa hàng văn phòng phẩm để mua các quyển tập ghi chép. Khoá học lập trình gồm 3 môn học, nên Nam dự định mua các quyển tập cho 3 môn sao cho số tập của mỗi môn là như nhau. Cửa hàng có hai loại gói: loại gói có một quyển tập giá mỗi gói a đồng, loại gói có hai quyển tập giá mỗi gói b đồng. Năm học vừa rồi Nam còn lại n quyển tập chưa dùng đến, anh ấy định mua thêm một số quyển tập nữa để bổ sung cho đủ số.

            Yêu cầu: Hãy tính xem số tiền ít nhất mà Nam phải trả để mua các quyển tập bổ sung thêm sao cho tổng số quyển tập chia đều cho ba môn học.

            Dữ liệu vào: Cho tệp văn bản MUATAP.INP chỉ có một dòng chứa ba số nguyên lần lượt là n, a, b (1<=n, a, b <=10^9) . Giữa các số cách nhau ít nhất một khoảng trống.

            Kết quả: Ghi ra tệp văn bản MUATAP.OUT trên một dòng gồm số nguyên là số tiền ít nhất mà bạn Nam phải trả.

            Ví dụ:

MUATAP.INP

MUATAP.OUT

1 1 3

2

4 2 3

3

6 4 4

0

Giải thích: Trong ví dụ thứ nhất, bạn Nam đã có sẵn 1 quyển tập, bạn ấy mua thêm (ít nhất) 2 quyển để được 3 quyển chia đều cho 3 môn, và bạn Nam mua 2 gói loại một quyển với giá 2a = 2. Ở ví dụ thứ hai, bạn Nam cần mua thêm 2 quyển tập và bạn ấy mua 1 gói loại hai quyển có giá b = 3. Trong ví dụ thứ ba, số quyển tâp hiện có là 6 quyển có thể chia đều cho 3 môn nên bạn Nam không cần mua thêm.

CODE THAM KHẢO:

program Mua_Tap;

Const fi  = 'MUATAP.INP';

      fo  = 'MUATAP.OUT';

Var n,a,b,S,k:Longint;

    f:Text;

Function min(a, b: Longint) : Longint;

  Begin

    If (a<b) then min:=a

    Else min:=b;

  End;

Begin

  Assign(f,fi);

  Reset(f);

  Read(f,n,a,b);

  Close(f);

  k := 3 - n mod 3;

  If k=2 then S := min (2*a,b);

  If k=1 then S := min (a,2*b);

  If k=0 then S := 0;

  Assign(f,fo);

  ReWrite(f);

  Write(f,S);

  Close(f);

End.



Tèo tham gia một tổ chức thu mua chuối giúp người nông dân. Cậu sử dụng phần mềm đặc biệt để định giá cho mỗi buồng chuối. Dựa trên các bức ảnh chụp mỗi buồng chuối, phần mềm sẽ đưa ra 2 giá trị ước tính P1 và P2. Nếu chênh lệch giữa P1 và P2 là bé hơn hoặc bằng X, thì phần mềm sẽ chọn giá cao hơn. Nếu chênh lệch giữa P1 và P2 lớn hơn X, phần mềm sẽ trả về giá trị thứ ba P3 là giá mua của buồng chuối đó.

            Yêu cầu: Hãy viết chương trình tính tổng giá trị của tất cả các buồng chuối. Chương trình được lưu với tên CUUCHUOI.PAS.

            Input: Đọc từ file CUUCHUOI.INP gồm:

            - Dòng đầu tiên ghi số nguyên N (1<=N<=20) , số lượng buồng chuối.

            - Dòng thứ hai ghi số nguyên X (1<=X<=10) .

            - N khối dòng sau mô tả các giá trị phần mềm định giá, mỗi khối có thể là:

            + Dòng đầu ghi hai số nguyên P1 và P2 (1<=P1, P2<=100) .

            + Nếu chênh lệch giữa P1 và P2 lớn hơn X sẽ có thêm dòng thứ 2 ghi P3 (1<=P3<=100).

            Output: Ghi ra file CUUCHUOI.OUT tổng giá trị của tất cả các buồng chuối.

            Ví dụ:

CUUCHUOI.INP

CUUCHUOI.OUT

4

2

3 5

2 8

4

6 5

6 3

7

22

 

            Giải thích: có 4 buồng chuối, phần mềm định giá lần lượt là: 5, 4, 6, 7 nên tổng giá trị là 22.

CODE THAM KHẢO
program cuuchuoi;
uses crt;
var i,n,j,d,tong,x,tam:longint;
    f1,f2:text;
    a,b,c:array[1..10000] of longint;
begin
        clrscr;
        assign(f1,'cuuchuoi.inp'); reset(f1);
        assign(f2,'cuuchuoi.out'); rewrite(f2);
        readln(f1,n); readln(f1,x);
        while not eof(f1) do
        begin
                inc(i);
                read(f1,a[i],b[i]);
                if a[i]>=b[i] then tam:=a[i]-b[i] else tam:=b[i]-a[i];
                if (tam>x) then begin readln(f1); read(f1,c[i]); end;
                tam:=0; readln(f1);
        end;
        tam:=0;
        for i:=1 to n do begin
        if (c[i]=0) then begin if a[i]>=b[i] then tam:=a[i] else tam:=b[i]; end;
        if c[i]<>0 then tam:=c[i];
        tong:=tong+tam; tam:=0;
        end;
        write(f2,tong);
        close(f1); close(f2);
end.


Một dãy số a1, a2, …,an được gọi là dãy tăng nếu như nó thoả điều kiện:

a1 < a2 < … < an

            Yêu cầu: Cho dãy số nguyên a1, a2, …, an. Hãy cho biết dãy số này có phải dãy tăng hay không? Nếu không phải dãy tăng thì hãy cho biết chỉ số k nhỏ nhất của phần tử làm cho dãy không có tính chất của dãy tăng.

            Dữ liệu vào: Cho từ tệp văn bản có tên BL4.INP có dạng như sau:

            - Dòng đầu tiên ghi số nguyên N (1 < n < 1000)

            - Dòng thứ 2 ghi dãy n số nguyên a1, a2, …, an (-1000 < ai < 1000, i=1..n)

            Kết quả: Ghi ra tệp văn bản có tên BL4.OUT gồm một số nguyên duy nhất k. Trường hợp dãy đã cho là dãy tăng thì ghi số 0.

            Ví dụ 1:

BL4.INP

BL4.OUT

6

2 7 10 18 25 41

0

           

            Ví dụ 2:

BL4.INP

BL4.OUT

8

3 6 10 7 15 20 18 12

4


    CODE THAM KHẢO

    program Day_tang;

    var a:array[1..1000] of longint;

            i,n: longint;

            f:text;

    begin

        assign(f, 'bl4.inp'); reset(f);

        Readln(f,n);

        for i:=1 to n do read(f,a[i]);

        close(f);

        assign(f,'bl4.out'); rewrite(f);

        i:=1;

        while (i<n-1) and (a[i] < a[i+1]) do inc(i);

        if i < n-1 then write(f,i+1) else write(f,0);

        close(f);

end.



Trong soạn thảo văn bản, theo quy ước giữa các từ chỉ nên cách nhau bằng một khoảng cách. Tuy nhiên trên thực tế vẫn có những trường hợp ngoại lệ.

            Yêu cầu: Cho trước một xâu ký tự S chỉ gồm các chữ cái và các khoảng cách. Hãy cho biết có nhiều nhất bao nhiêu khoảng cách đi liền nhau trong xâu S.

            Dữ liệu vào: Cho từ tệp văn bản có tên BL3.INP gồm một dòng ghi xâu S (độ dài xâu không quá 250 ký tự).

            Kết quả: Ghi ra tệp văn bản có tên BL3.OUT gồm một số nguyên duy nhất là số khoảng cách nhiều nhất đi liền nhau.

            Ví dụ:

                

BL3.INP

BL3.OUT

thucWWWhanhWWWWWtinWhocWW

5

Giải thích: Trong ví dụ trên, ký hiệu W tượng trưng cho một khoảng cách.

    CODE THAM KHẢO

    program Khoang_cach;

    var   s:string;

            max, d, i: integer;

            f:text;

    begin

        assign(f,'bl3.inp'); reset(f);

        readln(f,s);

        close(f);

        assign(f,'bl3.out'); rewrite(f);

        max:=0; d:=0; s:=s+'a';

        for i:=1 to length(s) do

        if s[i] = ' ' then inc(d)

        else

                begin

                     if d > max then max:=d;

                     d:=0;

                end;

        write(f,max);

        close(f)

    end.





 Hôm nay lớp 3A tổ chức liên hoan cuối năm. Cô giáo chủ nhiệm mua những chiếc bánh rất ngon và cắt ra cho mỗi em một phần. Để thưởng cho các học sinh đạt loại giỏi cả năm, cô giáo quyết định chia cho các em này những phần bánh to hơn những bạn khác. Mỗi chiếc bánh có thể được cắt ra thành 3 phần hoặc cắt thành 5 phần. Biết rằng lớp 3A có n học sinh và số chiếc bánh mà cô giáo chủ nhiệm mua là m chiếc. Sau khi cắt bánh và chia ra thì mỗi em học sinh nhận đúng một phần bánh không dư không thiếu.

Yêu cầu: Hãy cho biết lớp 3A có bao nhiêu học sinh đạt loại giỏi cả năm?
Dữ liệu vào: Nhập từ bàn phím hai số nguyên dương n và m (1≤n,m≤100)

Kết quả ra: Xuất ra màn hình số học sinh giỏi cả năm của lớp 3A. Nếu có nhiều phương án thì chỉ chọn phương án có nhiều học sinh giỏi nhất.

Ví dụ:

Nhập từ bàn phím

Xuất ra màn hình

Nhap so hoc sinh: 46
Nhap so chiec banh: 14

So hoc sinh loai gioi: 36

Giải thích: Lấy 12 chiếc bánh chia mỗi chiếc thành 3 phần được 36 phần cho 36 học sinh giỏi, còn 2 chiếc bánh chia mỗi chiếc thành 5 phần được 10 phần cho 10 bạn còn lại.

    CODE THAM KHẢO:

    program cat_banh;

    uses crt;

    var x,m,n: integer;

    begin

        clrscr;

        write('Nhap so hoc sinh: '); readln(n);

        write('Nhap so chiec banh: '); readln(m);

        for x:=m downto 0 do 

        if x*3 + (m-x)*5 = n then break;

        writeln('So hoc sinh loai gioi: ',x*3);

        readln

end.



Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget