Một số được gọi là số gần chính phương nếu tổng các chữ số của nó là số chính phương. hãy viết chương trình kiểm tra xem N có phải là số gần chính phương không vd SOGANCP.INP SOGANCP.OUT 3( số lượng) 13 YES 316 NO 306 YES giải giúp với ạ ko cần file
2 câu trả lời
uses crt;
var q,n,i:longint;
function cp(n:longint):boolean;
begin
exit(sqrt(n) = trunc(sqrt(n)));
end;
function sumDigits(n:longint):boolean;
var i,sum:longint;
begin
sum:=0;
while(n > 0) do
begin
inc(sum, n mod 10);
n:=n div 10;
end;
exit(cp(sum));
end;
procedure solve();
begin
readln(n);
if(sumDigits(n)) then writeln('YES') else writeln('NO');
end;
begin
clrscr;
readln(q);
for i:=q downto 1 do
solve();
readln;
end.
uses crt;
var t, n:longint;
/// kiem tra so chinh phuong
function scp(n:longint):boolean;
begin
exit( frac(sqrt(n)) = 0 );
end;
/// kiem tra xem n co gan chinh phuong khong
function gancp(n:longint):boolean;
var s:longint;
begin
s:=0;
while n <> 0 do
begin
inc(s,n mod 10);
n:=n div 10;
end;
exit( scp(s) );
end;
begin
clrscr;
readln(t);
while t > 0 do
begin
dec(t);
readln(n);
if (gancp(n)) then writeln('YES') else writeln('NO');
end;
readln
end.