Một hình vuông có số đo
diện tích là một số X chữ số (đơn vị là cm2). Số đo diện tích chia hết
cho cả 9 và 5; Biết rằng số đo của cạnh, chu vi và diện tích là các số tự
nhiên. Viết chương trình tìm diện tích và chu vi của hình vuông theo các yêu cầu
sau:
Input cho trong tập tin BAI1.INP chứa số tự nhiên X (với 3
<= X <= 15).
Output ghi vào tập tin BAI1.OUT gồm 02 (hai) số tự nhiên là diện
tích và chu vi của hình vuông, cách nhau ít nhất một ký tự trắng.
Lưu ý:
Trong trường hợp có nhiều kết quả đúng theo yêu cầu thì xét kết quả có
giá trị lớn nhất. Lưu kết quả vào tệp có tên BAI01.PAS.
Chương trình ví dụ:
BAI1.INP |
BAI1.OUT |
3 |
900 120 |
program TimCanhHinhVuong;
var x:byte;
a,b: Qword;
k,i: Qword;
f:text;
procedure TaoSo(x:byte; var a,b: Qword);
var j:byte;
begin
a:=100;
for j:=4 to x do a:=a*10;
b:=a*10;
end;
begin
assign(f,'BAI1.INP'); reset(f);
readln(f,x);
close(f);
assign(f,'BAI1.OUT'); rewrite(f);
TaoSo(x,a,b);
i:=trunc(sqrt(b-1));
while i >=trunc(sqrt(a)) do
begin
if (i*i mod 5 = 0) and (i*i mod 9 = 0) then
begin
write(f,i*i, ' ',4*i);
break;
end;
i:=i-1;
end;
close(f);
end.
//Cách 2:
var x:byte;
a,S:qword;
f:text;
BEGIN
assign(f,'BAI1.INP'); reset(f);
readln(f,x);
close(f);
assign(f,'BAI1.OUT'); rewrite(f);
S:=round(exp(ln(10)*x))-1;
a:=(trunc(sqrt(S)) div 15)*15;
writeln(f,a*a,' ',a*4);
close(f);
END.
- Giải thích: S chia hết cho 9 và 5 thì cạnh phải chia hết cho 3 và 5 nghĩa là chia hết cho 15. S lớn nhất có x chữ số thì bình phương nó phải liền kề với sqrt của nó, đồng thời chia hết 15 nên lấy phần nguyên của sqrt(s) chia 15 và nhân 15
Đăng nhận xét