Thứ Tư, 20 tháng 2, 2019

Bài tập Pascal 19



1/ Điền số
Cho một bảng 2 chiều kích thước n*n. Hãy thực hiện điền các số nguyên dương vào bảng theo quy luật sau :
- Ô (1,1) (góc trái trên) bằng 1.
- Thứ tự điền theo dòng từ trên xuống và theo cột từ trái sang phải.
- Giá trị điền vào ô tại dòng i, cột j phải là số nhỏ nhất chưa xuất hiện trên dòng i và cột j
VD : với n=5
KQ : 
1 2 3 4 5
2 1 4 3 6
3 4 1 2 7
4 3 2 1 8
5 6 7 8 1

input: cho số nguyên n
output: bảng số đã điền
2/ Số đối xứng
Một số được gọi là số đối xứng khi các chữ số của nó đối xứng qua tâm. Ví dụ : 5, 44, 212, 71217. Cho một số x = 371, số đối xứng lớn hơn và gần x nhất là 373.
Yêu cầu : cho một số nguyên dương x (x có số chữ số <= 100), hãy tìm số đối xứng lớn hơn và gần x nhất.




Câu 1. Cho một số nguyên dương n (n ≤ 1018). Đếm xem n có bao nhiêu ước số nguyên tố. Ví dụ: n = 100 có hai ước số nguyên tố là 2 và 5.

Dữ liệu vào: cho trong tệp văn bản CAU1.INP chứa số nguyên dương n.
Dữ liệu ra: ghi vào tệp văn bản CAU1.OUT số lượng ước số nguyên tố của n.
Ví dụ:
CAU1.INP
CAU1.OUT
100
2
Câu 2. Trong Hội thi Tin học trẻ bảng B cấp tỉnh hàng năm, đề thi có 3 câu với tổng số điểm là 100. Theo quy định sẽ có không quá m% số lượng thí sinh được chọn để trao giải nhất, nhì, ba và khuyến khích trên tổng số thí sinh dự thi. Các thí sinh được chọn dựa trên tổng điểm bài thi theo thứ tự từ cao xuống thấp. Lưu ý: Ban Tổ chức sẽ chọn nhiều nhất số thí sinh để trao giải nhưng không được vượt quá m% tổng số thí sinh dự thi.
Yêu cầu: Hãy xác định số lượng thí sinh đạt giải.
Dữ liệu vào: Cho trong tệp văn bản CAU2.INP gồm:
- Dòng đầu ghi 2 số nguyên dương n và m là số lượng thí sinh dự thi (1≤n≤1000) và tỷ lệ % số lượng thí sinh đạt giải (30≤m≤70);
- n dòng còn lại, mỗi dòng ghi 3 số nguyên dương là điểm thi của 3 câu trong bài thi của từng thí sinh (0≤tổng điểm 3 câu≤100).
Dữ liệu ra: ghi vào tệp văn bản CAU2.OUT số lượng thí sinh đạt giải.
Ví dụ:
CAU2.INP
CAU2.OUT
8 50
32 30 30
40 30 30
16 9 6
8 30 27
20 15 30
36 27 24
8 6 6
4 3 3
3
Giải thích: Có 8 thí sinh dự thi và lấy 50% số lượng thí sinh đạt giải. Tổng điểm sau khi sắp xếp theo thứ tự giảm dần là: 100, 92, 87, 65, 65, 31, 20, 10. Như vậy không thể lấy đúng 50% (tương đương 4) thí sinh đạt giải. Khi đó phải lấy 3 thí sinh, tương ứng với 37,5%.
Câu 3. Để đăng ký tài khoản của website abc.com, người dùng phải điền thông tin bao gồm tên và mật khẩu. Yêu cầu của mật khẩu là phải bao gồm:
−       Ít nhất một chữ cái thường; (nghĩa là có thể có nhiều chữ cái thường)
−       Ít nhất một chữ cái IN HOA;
−       Ít nhất một chữ số;
−       Ít nhất một trong các ký hiệu: !, @, #, $;
−       Độ dài mật khẩu ít nhất là 8 ký tự.
Ví dụ: mật khẩu abcD@123 là hợp lệ; mật khẩu FHGF#2534 không hợp lệ vì không chứa chữ cái thường.
Yêu cầu: Hãy xác định xem mật khẩu có hợp lệ hay không.
Dữ liệu vào: cho trong tệp văn bản CAU3.INP chứa một số dòng, mỗi dòng ghi một mật khẩu (≤255 ký tự).
Dữ liệu ra: ghi vào tệp CAU3.OUT số lượng mật khẩu hợp lệ.
Ví dụ:
CAU3.INP
CAU3.OUT
abcD@123
FHGF#2534
WRfg$000
2

3 nhận xét:

  1. const
    nhap='sodoixung.inp';
    xuat='sodoixung.out';
    var
    x:integer;
    function daonguoc(k:integer):integer;
    var c,b:integer;
    begin b:=k;c:=0;
    while k<>0 do
    begin
    c:=c+k mod 10;
    k:=k div 10;
    end;
    if c=b then daonguoc:=1
    else daonguoc:=0;end;
    begin
    assign(input,nhap);reset(input);
    assign(output,xuat);rewrite(output);
    readln(x);x:=x+1;
    while daonguoc(x)=0 do
    x:=x+1;
    write(x);close(input);close(output);end.

    Trả lờiXóa
  2. const
    nhap='fsdagfs.inp';
    xuat='fsdagfs.out';
    var
    x:integer;
    function daonguoc(k:integer):integer;
    var c,b:integer;
    begin b:=k;c:=0;
    while k<>0 do
    begin
    c:=c*10+k mod 10;
    k:=k div 10;
    end;k:=b;
    if c=b then daonguoc:=1
    else daonguoc:=0;end;
    begin
    assign(input,nhap);reset(input);
    assign(output,xuat);rewrite(output);
    readln(x);x:=x+1;
    while daonguoc(x)=0 do
    x:=x+1;
    write(x);close(input);close(output);end.

    Trả lờiXóa
  3. const
    nhap='doixung.inp';
    xuat='doixung.out';
    var x:longint;
    function kt(k:longint):longint;
    var b,d,c:longint;
    begin
    d:=0;
    while k<>0 do
    begin
    c:=k mod 10;
    k:=k div 10;
    d:=d*10+c;
    end;
    kt:=d;
    end;
    begin
    assign(input,nhap);reset(input);
    assign(output,xuat);rewrite(output);
    readln(x);
    x:=x+1;
    while kt(x)<>x do x:=x+1;
    write(x);
    close(input);close(output);
    end.

    {so doi xung lon hon x va gan x nhat}

    Trả lờiXóa