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.