tháng 4 2022

Trong các hóa đơn tính tiền ở nhiều lĩnh vực, để tiện đọc các số tiền có trên ba chữ số người ta dùng dấu chấm “.” để phân cách lần lượt ba chữ số tính từ phải sang trái.

Yêu cầu: nhập vào số tự nhiên n có từ 10 chữ số (10 n 250), thêm dấu chấm phân cách mỗi ba chữ số tính từ phải sang trái rồi xuất kết quả trên màn hình.

Ví dụ: nhập số n = 123456789999. 

Kết quả trên màn hình: n = 123.456.789.999

CODE THAM KHẢO:

program phan_cach;

uses crt;

var s,st: string;

    n,i,d:longint;

begin

    clrscr;

    write('Nhap N = '); readln(s);

    n:=length(s); st:='';

    write('N = ');

    for i:=n downto 1 do

    begin

        d:=d+1;

        st:=s[i] + st;

        if (d mod 3 = 0) and (d<n) then st:='.'+ st;

    end;

    write(st);

    readln;

end.



Hai số tự nhiên được gọi là nguyên tố tương đương nếu chúng có chung các ước số nguyên tố. Hãy viết chương trình kiểm tra xem hai số tự nhiên mn được nhập từ bàn phím có là nguyên tố tương đương với nhau hay không?

Yêu cầu: Nhập hai số tự nhiên mn (0 < m, n ≤ 109), xuất kết quả kiểm tra trên màn hình.

Ví dụ: nhập n =75m = 15. Kết quả: 75 và 15 la hai so nguyen to tuong duong.


CODE THAM KHẢO:

uses crt;

var n,m,i:longint; t:boolean;

begin

        clrscr;

        write('Nhap N = '); readln(n);

        write('Nhap M = '); readln(M);

        write(n,' va ',m);

        i:=2;  t:=true;

        repeat

                if n mod i = 0 then

                begin

                        if m mod i <>0 then t:=false;

                        while n mod i =0 do n:=n div i;

                        while m mod i =0 do m:=m div i;

                        if ((n=1) and (m<>1)) or ((n<>1) and (m=1)) then t:=false;

                end;

                i:=i+1;

                if i>sqrt(n) then i:=n;

        until (n=1) or (m=1);

        if t then write(' la hai so nguyen to tuong duong')

        else write(' khong phai so nguyen to tuong duong');

        readln;

end.





1. Cách nạp hàm tự tạo
    + Từ giao diện chương trình Excel, nhấn tổ hợp phím tắt "Alt + F11"
    + Từ cửa sổ Microsoft Visual Basic, mở bảng chọn "Insert -> Module"
    + Sao chép và dán đoạn mã phía dưới vào vùng soạn thảo trong cửa sổ Microsoft Visual Basic
    + Nhấn tổ hợp phím "Alt + Q" và bắt đầu sử dụng


2. Cú pháp sử dụng
    + Tách họ: =TachHo(<Địa chỉ ô hoặc Chuỗi văn bản>)
    + Tách họ đệm: =TachHoDem(<Địa chỉ ô hoặc Chuỗi văn bản>)
    + Tách tên: =TachTen(<Địa chỉ ô hoặc Chuỗi văn bản>)

3. Nội dung các hàm:

Function TachHoVaDem(str As String) As String Dim strLen As Integer Dim j As Integer str = Trim(str) strLen = Len(str) For j = strLen To 1 Step -1 If Mid(str, j, 1) = " " Then Exit For End If Next If j > 1 Then TachHoVaDem = Application.Trim(Mid(str, 1, j)) Else TachHoVaDem = str End If End Function Function TachHo(str As String) As String Dim strLen As Integer Dim i As Integer str = Trim(str) strLen = Len(str) For i = 1 To strLen If Mid(str, i, 1) = " " Then Exit For End If Next If Trim(Mid(str, 1, i - 1)) = str Then TachHo = "" Else TachHo = Trim(Mid(str, 1, i - 1)) End If End Function Function TachHoDem(str As String) As String Dim strLen As Integer Dim i, j As Integer str = Trim(str) strLen = Len(str) For i = 1 To strLen If Mid(str, i, 1) = " " Then Exit For End If Next For j = strLen To 1 Step -1 If Mid(str, j, 1) = " " Then Exit For End If Next If i < j + 1 Then TachHoDem = Trim(Mid(str, i, j - i + 1)) Else TachHoDem = "" End If End Function Function TachTen(str As String) As String Dim strLen As Integer Dim j As Integer str = Trim(str) strLen = Len(str) For j = strLen To 1 Step -1 If Mid(str, j, 1) = " " Then Exit For End If Next If j > 1 Then TachTen = Trim(Mid(str, j + 1, strLen - j)) Else TachTen = str End If End Function


Một số nguyên dương T được gọi là số nguyên tố đối xứng nếu thỏa mãn các yêu cầu sau:

-         T là một số nguyên tố

-         T là một số đối xứng (đọc T từ trái qua phải thu được kết quả giống như đọc T từ phải qua tái).

Ví dụ 12321 là một số đối xứng.

Yêu cầu: cho 2 số nguyên dương A và B, hãy tìm số lượng các số nguyên tố đối xứng T thỏa mãn A ≤ T ≤ B ≤ 100000

Dữ liệu: vào từ file văn bản NTDX.INP gồm một dòng chứa 2 số nguyên dương A và B cách nhau 1 dấu cách (104 A < B < 105)

Kết quả: ghi vào file văn bản NTDX.OUT một số nguyên là số lượng số nguyên tố tìm được.

NTDX.INP

NTDX.OUT

11111 22222

23


CODE THAM KHẢO:
    program snt_doixung;
    var n,i,d,A,B,j: longint;
    function snt(n:longint): boolean;
    var i: longint;
    begin
            snt:=true;
            if n < 2 then exit(false);
            for i:=2 to trunc(sqrt(n)) do
            if n mod i = 0 then exit(false);
    end;
    function dx(m: longint): boolean;
    var s:string; i:longint;
    begin
            str(m,s);
            dx:=true;
            for i:=1 to length(s) do
            if s[i] <> s[length(s)-i+1] then exit(false);
    end;
    begin
          assign(input,'NTDX.INP'); reset(input);
          assign(output,'NTDX.OUT'); rewrite(output);
          read(A,B); d:=0;
          for j:=A to B do
          if (snt(j)) and (dx(j)) then inc(d);
          write(d);
          close(input); close(output)
    end.



Cho hai xâu X, Y gồm các ký tự số từ 0 đến 9 được biểu diễn như sau:

            X = x1, x2, …, xn; Y = y1, y2, …, ym (n,m<250). Hãy viết chương trình sinh ra xâu ST thoả mãn các điều kiện sau:

            - ST gồm các ký tự số vừa có mặt ở xâu X, vừa có mặt ở xâu Y.

            - Các ký tự số trong xâu ST chỉ xuất hiện duy nhất một lần.

            - Xâu ST nếu đổi ra số sẽ nhận được một số đạt giá trị lớn nhất.

            Dữ liệu vào: Cho bởi file text SINHXAU.INP chứa xâu X và xâu Y, mỗi xâu nằm trên một dòng.

            Kết quả: Ghi ra file SINHXAU.OUT là số lớn nhất nhận được.

SINHXAU.INP

SINHXAU.OUT

X= ‘19012304’

Y= ‘034012

43210

X= ‘2468’                       

Y= ‘3579’

Khong co

    CODE THAM KHẢO:

    program sinh_xau_ky_tu;

    var X, Y, st: string;

        f:text;

        ch:char;

    begin

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

            readln(f,X);

            readln(f,Y);

            close(f);

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

            st:='';

            for ch:='9' downto '0' do

              if (pos(ch,X)<>0) and (pos(ch,Y)<>0) then st:=st+ch;

            if length(st) > 0 then write(f,st)

            else write(f,'Khong co');

            close(f);

    end.



Cho một dãy số nguyên dương gồm N phần tử a1, a2, …, aN với (1≤ N ≤ 30). Hãy viết chương trình thực hiện công việc sau: Đếm trong dãy số trên có bao nhiêu cặp số sinh đôi. Biết rằng, hai số được gọi là cặp số sinh đôi nếu nó là các số nguyên tố và có hiệu bằng 2, ví dụ hai số 7 và 5 là một cặp số sinh đôi.

Dữ liệu vào: Nhập vào số nguyên dương N và các giá trị ai của dãy số (1 ≤ i ≤ N);

Kết quả ra: Ghi ra màn hình gồm hai dòng:

            - Dòng đầu: là một số nguyên dương cho biết số cặp số sinh đôi tìm được;

            - Dòng thứ hai: là các cặp số sinh đôi tìm được;

            - Nếu không tìm được thì ghi là “khong co cap nao”.

            Các số trên một dòng viết cách nhau ít nhất một dấu cách.

Ví dụ:

Dữ liệu vào

Dữ liệu ra

10

10 5 6 8 20 11 13 7 89 30

2

(7,5) (13,11)

4

25 43 6 7 9

khong co cap nao

    CODE THAM KHẢO:

    program CapSoSinhDoi;

    uses crt;

    var i, n, d: integer;

        A: array[1..100] of integer;

        NT: array[-110..100000] of byte;

    function snt(M: integer): boolean;

    var j: integer;

    begin

           snt:=True;

           if m < 2 then exit(false) else

           for j:=2 to trunc(sqrt(m)) do

            if m mod j = 0 then exit(false);

    end;

    begin

            clrscr;

            fillchar(NT,sizeof(NT),0);

            write('Nhap N = '); readln(n);

            d:=0;

            for i:=1 to n do

            begin

                    write('A[',i,'] = '); readln(A[i]);

                    if snt(a[i]) then

                    begin

                        NT[a[i]]:=1;

                        if NT[a[i]-2]=1 then inc(d);

                    end;

            end;

            if d > 0 then

            begin

                    writeln(d);

                    for i:=1 to n do

                       if (NT[a[i]-2] = 1) and (NT[a[i]] = 1) then

                       write('(',a[i],' ',a[i]-2,')');

            end else write('khong co cap nao');

            readln;

    end.




Số đối xứng là số có thể viết từ phải sang trái các chữ số của nó ta vẫn được chính nó. Từ một số có hai chữ số ta có thể nhận được một số đối xứng theo cách sau: Lấy số ban đầu cộng với số viết lại theo thứ tự ngược lại của nó, nếu kết quả chưa phải là số đối xứng, số đó lại cộng với số viết theo thứ tự của nó và tiếp tục như vậy cho đến khi nhận được số đối xứng.

            Ví dụ: Từ số 49 ta có: 49 + 94 = 143; 143 + 341 = 484. Như vậy số đối xứng thu được từ số 49 là 484.

            Em hãy viết chương trình tìm số đối xứng từ số N (với số N là một số nguyên có hai chữ số khác nhau và 11<=N<=99 được nhập từ bàn phím).

CODE THAM KHẢO:

program so_doi_xung;

uses crt;

var m,n,s:qword;

function dx(n:qword): boolean;

var i,k:byte;

    s:string;

begin

        str(n,s);

        k:=length(s);

        dx:=true;

        for i:=1 to k div 2 do

        if s[i] <> s[k-i+1] then

        begin

                dx:=false;

                break;

        end;

end;

begin

        clrscr;

        repeat

                write('Nhap N: '); readln(n);

        until (n>=11) and (n<=99);

        s:=n;

        if dx(n) then begin write(n); s:=0; end else

        repeat

                m:=0;

                while n > 0 do

                begin

                        m:=m*10 + N mod 10;

                        n:= n div 10;

                end;

                s:=s+m;

                n:=s;

        until dx(s) = True;

        if s<>0 then write(s);

        readln;

end.




Tranh thủ trong giờ ra chơi, hai bạn Khang và Nam rủ nhau chơi trò chơi tìm số. Hai bạn lần lượt mỗi người viết một số nguyên lên bảng, Khang viết số thứ nhất, Nam viết số thứ hai, rồi đến lượt Khang viết số thứ ba,... Cứ tiếp tục như vậy hai bạn viết được một dãy số gồm n số a1, a2,..., an. Khi hai bạn chưa kết thúc trò chơi của mình thì đã đến giờ học, giáo viên vào lớp thấy dãy số trên bảng, giáo viên đặt ra câu đố: “tìm một đoạn các số liên tiếp trong dãy số trên sao cho tổng giá trị các số trong đoạn đó là lớn nhất". Vì dãy số có quá nhiều số nên cả lớp nhìn hoa cả mắt mà vẫn chưa tìm ra đáp án. Bạn hãy lập trình giải câu đổ trên giúp các bạn trong lớp nhé.

Input: cho từ tệp văn bản TONG.INP gồm:

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

- Dòng thứ hai ghi dãy n số nguyên a1, a2,..., an

Output: ghi ra tệp văn bản TONG.OUT gồm:

- Dòng thứ nhất ghi tổng lớn nhất của đoạn các số liên tiếp trong dãy.

- Dòng thứ hai ghi vị trí bắt đầu của đoạn tìm được.

- Dòng thứ ba ghi chiều dài của đoạn tìm được.

Ví dụ:

TONG.INP

TONG.OUT

10

2 -9 4 1 -3 5 8 -7 3 1

Xau con co tong lon nhat: 15

Bat dau tu vi tri: 3

Dai: 5


CODE THAM KHẢO:
program xaucon_tonglonnhat;
var a:array[1..1000] of longint;
    i,n,s,sum,vtd,vtc,tam: longint;
begin
        assign(input,'tong.inp'); reset(input);
        assign(output,'tong.out'); rewrite(output);
        readln(n);
        for i:=1 to n do read(a[i]);
        vtd:=0; vtc:=0; s:=0; sum:=-3200; tam:=0;
        for i:=1 to n do
        begin
                if a[i] > s+a[i] then
                begin
                        tam:=i;
                        s:=a[i];
                end else s:=s+a[i];
                if sum < s then
                begin
                        sum:=s;
                        vtd:=tam;
                        vtc:=i;
                end;
        end;
        writeln('Xau con co tong lon nhat: ',sum);
        writeln('Bat dau tu vi tri: ',vtd);
        writeln('Dai: ',vtc-vtd+1);
        close(input); close(output);
end.



Tam giác được tạo thành từ 03 (ba) đoạn thẳng và thỏa mãn điều kiện tổng hai cạnh bất kỳ lớn hơn cạnh thứ ba. Hai tam giác khác nhau khi có ít nhất một cạnh có độ dài khác so với tam giác kia.

Viết chương trình tìm tất cả các cặp tam giác khác nhau có cùng chu vi từ 06 (sáu) đoạn thẳng cho trước.

Input cho trong tập tin BAI3.INP gồm 01 (một) dòng duy nhất gồm 06 (sáu) số tự nhiên lớn hơn không, là độ dài của 06 (sáu) đoạn thẳng, mỗi giá trị cách nhau ít nhất một ký tự trắng.

Output ghi vào tập tin BAI3.OUT là các cặp tam giác khau nhau có cùng chu vi, mỗi cặp tam giác in trên một dòng theo dạng biểu thức. Trong trường hợp không tìm được thì thông báo “KHONG TIM DUOC”.

Chương trình ví dụ:

BAI2.INP

BAI2.OUT

48 49 60 65 70 71

Cap thu 1: 48+60+71=49+60+70

Cap thu 2: 48+65+71=49+65+70


CODE THAM KHẢO:
Var mTest : Array[1..3] Of Byte;
mData : Array[1..20] Of Integer;
mResult : Array[1..3, 1..1000] Of Integer;
Sl : Integer;
X : Byte;

Function TG(a, b, c : Integer) : Boolean;
Begin
TG := False;
If (a + b > c) And
(b + c > a) And
(c + a > b)
Then TG := True;
End;

Procedure Save(a, b, c : Integer);
Begin
Inc(Sl);
mResult[1, Sl] := a;
mResult[2, Sl] := b;
mResult[3, Sl] := c;
End;

Function CheckDup(a, b, c : Integer) : Boolean;
Var i : Integer;
Begin
CheckDup := False;
For i := 1 To Sl Do
If (a = mResult[1, i]) And (b = mResult[2, i]) And (c = mResult[3, i]) Then CheckDup := True;
End;

Procedure Print;
Var k, i, j : Integer;
Begin
k := 0;
For i := 1 To Sl-1 Do
For j := i+1 To Sl Do
If mResult[1, i] + mResult[2, i] + mResult[3, i] =
mResult[1, j] + mResult[2, j] + mResult[3, j]
Then Begin
Inc(k);
Write('Cap thu ', k, ': ');
Write(mResult[1, i], '+');
Write(mResult[2, i], '+');
Write(mResult[3, i]);
Write('=');
Write(mResult[1, j], '+');
Write(mResult[2, j], '+');
WriteLn(mResult[3, j]);
End;

If k = 0 Then WriteLn('KHONG TIM DUOC');
End;

Procedure Process;
Var i, j : Byte;
a, b, c : Integer;
Begin
For i := 1 To 2 Do
For j := i+1 To 3 Do
If (mTest[i] >= mTest[j]) Or (mData[mTest[i]] = mData[mTest[j]]) Then Exit;

a := mData[mTest[1]];
b := mData[mTest[2]];
c := mData[mTest[3]];

If TG(a, b, c) And (Not CheckDup(a, b, c)) Then Save(a, b, c);
End;

Procedure Test(k : Byte);
Var i : Byte;
Begin
For i := 1 To X Do Begin
mTest[k] := i;
If k = 3 Then Process Else Test(k+1);
End;
End;

Var i : Byte;
Flag : Boolean;
Begin
        assign(input,'BAI2.INP'); reset(input);
        assign(output,'BAI2.OUT'); rewrite(output);
Sl := 0;
Flag := True;
X := 6;

For i := 1 To X Do
Begin
Read(mData[i]);
If mData[i] <= 0 Then Begin
WriteLn('So thu ', i, ' khong hop le');
Flag := False;
End;
End;
ReadLn;
If Flag Then Begin
Test(1);
Print;
End;
        close(input); close(output);
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