tháng 5 2022

Cho một dãy gồm tất cả các số nguyên dương lẻ không chia hết cho 5 và được sắp xếp tăng dần: A1 = 1, A2 = 3, A3 = 7, A4 = 9, A5 = 11, …

            Yêu cầu: Cho trước một số nguyên dương K, hãy tìm số AK của dãy số trên.

            Dữ liệu: Một số nguyên dương K (K < 106)

            Kết quả: Ghi ra số AK tìm được

Input

Output

5

11

     

    CODE THAM KHẢO:

    uses crt;

    var k,a:int64;

    begin

        readln(k);

        a:=k div 4;

        if k mod 4=1 then a:=a*10+1

            else if k mod 4=2 then a:=a*10+3

                else if k mod 4=3 then a:=a*10+7

                    else a:=(a-1)*10+9;

        writeln(a);

        readln

    end.




Một số nguyên dương được gọi là siêu đối xứng nếu tất cả các chữ số của nó giống nhau. Chẳng hạn số 777 hoặc 4444 là các số  nguyên dương siêu đối xứng.

            Nhập từ bàn phím một số nguyên dương X. Hãy tìm và in ra màn hình số nguyên dương Y nhỏ nhất sao cho tổng X + Y là một số nguyên dương siêu đối xứng.

            Ví dụ:

Nhập từ bàn phím

In ra màn hình

45

10

Giải thích: 45 + 10 = 55

Giới hạn: Có 50% test ứng với X 106;

                  Có 30% ứng với 106 < X 109;

                  Có 20% test ứng với 109 < X ≤ 1016.

CODE THAM KHẢO:

program so_sieu_doi_xung;

uses crt,math;

var X,Y,C: string;

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

    i,j,max1,b,S:integer;

    tt: longint;


begin

        clrscr;

        write('Nhap X = '); readln(x);

        j:=0; max1:=0;

        for i:=1 to length(x) do

        begin

                inc(j);

                val(x[i],b);

                a[j]:=b;

                max1:=max(max1,A[j]);

        end;

        S:=0; Y:='';

        for i:=1 to j do

        begin

                S:=(max1-a[i]);

                str(s,c);

                Y:=Y+c;

        end;

        writeln(Y);

        readln;

end.




    Trong lý thuyết số ‘số giả nguyên tố’ là một số (có thể là hợp số) thỏa mãn một tính chất nào đó của số nguyên tố. Tùy theo tính chất mà ta sẽ có các loại số giả nguyên tố khác nhau. Ta quy ước tính chất của một số giả nguyên tố như sau: “Là một số thập phân hữu hạn dương mà từng chữ số của nó hoặc từng chữ số ở phần thập phân của nó là nguyên tố và tổng các chữ số của nó là số nguyên tố (với phần nguyên và phần thập phân cách nhau bởi dấu phẩy)”. Hãy viết chương trình kiểm tra xem một số có phải là “số giả nguyên tố” hay không?

            - Dữ liệu vào từ file: GiaNT.INP chỉ một dòng duy nhất ghi số thập phân hữu hạng dương (có độ dài không quá 500 chữ số).

            - Kết quả ghi vào file: GiaNT.OUT ghi kết quả “CO” hoặc “KHONG”.

Ví dụ:

            GIANT.INP

GIANT.OUT

73,232

CO

73,23212

KHONG

a Ý tưởng:

+ Khai báo mảng NT đánh dấu số nguyên tố 1 chữ số

+ Tách xâu thành 2 phần: phần nguyên và phân thập phân

+ Kiểm tra phần thập phân các chữ số có phải là số nguyên tố không: nếu có 1 chữ số không phải số nguyên tố thì thông báo “KHONG” kết thúc.

Ngược lại tính tổng các chữ số từ phần nguyên đến phần thập phân sau đó kiểm tra tổng có phải là số nguyên tố không: Nếu có thông báo “CO” ngược lại “KHONG”


CODE THAM KHẢO:

program So_GiaNT;

var fi,fo: text;

    NT: array[1..10] of boolean;

    s: ansistring;

function NgTo(T: longint): boolean;

var i: longint;

begin

        NgTo:=true;

        if T < 2 then exit(False)

        else

                for i:=2 to trunc(sqrt(T)) do

                if T mod i = 0 then exit(false);

end;

procedure Tinh;

var i,j,n,t,kt: integer;

    S1, S2: ansistring;

begin

        T:=0; Kt:=0;

        j:=pos(',',s);

        s1:=copy(s,1,j-1); //Tach phan nguyen

        s2:=copy(s,j+1,length(s)); //Tach phan thap phan

        for i:=1 to length(s2) do  //phan thap phan

        begin

                N:=ord(s2[i])-48;

                if (NT[N] = false) then

                begin

                        Kt:=1; write(fo,'KHONG'); break;

                end else T:=T+N;

        end;

        if Kt = 0 then   //Phan nguyen

        begin

                for i:=1 to length(s1) do T:=T+Ord(s1[i])-48;

                if NgTo(T) = True then write(fo,'CO') else write(fo,'KHONG');

        end;

end;

begin


        fillchar(NT,sizeof(NT),false);

        NT[2]:= True; NT[3]:=True; NT[5]:=True; NT[7]:=True;

        assign(fi,'GIANT.INP'); reset(fi);

        readln(fi,s);

        assign(fo,'GIANT.OUT'); rewrite(fo);

        Tinh;

        close(fi); close(fo);

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