Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Bài toán 1:

Cho biểu thức:
S:=S1+S2+S3+...+Sn;
Trong đó:
S1=1;
S2=1+2;
S3=1+2+3;
...
Sn=1+2+3+...+n;
Tính giá trị S mod 2018

Bài toán 2:

Cho số N <Nhập từ bàn phím> với 1<=N<=8
Tìm số đối xứng lớn nhất tạo bởi tích của 2 số có N chữ số
Và giá trị của số đối xứng đó Mode 1337

Ví dụ:

N=1 thì Tích có giá trị đối xứng lớn nhất là 9x1=9. và 9 Mode 1337=9
N=2 thì Tích có giá trị đối xứng lớn nhất là 99x91=9009. và 9009 Mode 1337=987


Bài 1:
var vl,n:int64;
a,b,c:int64;
begin
    readln(n);
    a := n;
    b := n+1;
    c := n+2;
    if a mod 3=0 then
    begin
        a := a div 3;
        if odd(a) then
            b := b div 2
    else
            a := a div 2;
    end;
    if b mod 3=0 then
    begin
        b := b div 3;
        if odd(b) then
            a := a div 2
    else
            b := b div 2;
    end;
    if c mod 3=0 then
    begin
        c := c div 3;
        if odd(c) then
            a := a div 2
    else
            c := c div 2;
    end;
    vl := ((a mod 2018)*(b mod 2018)*(c mod 2018)) mod 2018;
    write(vl);
    readln;
end.
Bài 2:
uses crt;
var n:byte;
    i,j,m,o:int64;
    b:boolean;
    k:int64;
function dx(x:int64):boolean;
var s:string;
    i:byte;
begin
    str(x,s);
    for i:=1 to (length(s) div 2) do
    if s[i]<>s[length(s)-i+1] then exit(false);
    exit(true);
end;
function lt10(x:byte):int64;
var lt:int64;
    i:byte;
begin
    lt:=1;
    for i:=1 to x do lt:=lt*10;
    lt10:=lt;
end;

begin
    clrscr;
    readln(n);
    i:=(lt10(n)-1);
    j:=(lt10(n)-1);
    m:=(lt10(n-1));
    o:=i;
    b:=true;
    while (i>m) and b  do
    begin
       while (j>=m) and b do
       begin
          k:=i*j;
          if dx(k) then
          begin
              writeln('Voi N = ',n);
              writeln(i,' x ', j,' = ',i*j);
              write(k,' mod 1337 = ',((i mod 1337)*(j mod 1337)) mod 1337);
              b:=false;
          end;
          dec(j);
       end;
       dec(i);
       j:=o;
    end;
    readln;
end.