import java.util.Scanner;
class Main {
public static void main(String [ ] args) {
// Инициализация нужных переменных
Scanner sn = new Scanner(System.in);
double n = sn.nextInt();
boolean ts = false;
// До тех пор, пока n > 1 и n != 2, будет находится его корень. Если в один момент корень будет = 2, то выведется "YES"
while(n > 1) {
n = Math.sqrt(n);
if(n == 2) {
ts = true;
break;
}
}
if(ts) {
System.out.print("YES");
}
else {
System.out.print("NO");
}
}
}
Поделитесь своими знаниями, ответьте на вопрос:
Дан массив из n элементов . каждый элемент равен 0, 1 или 2. переставить элементы так, чтобы сначала располагались все нули, затем все единицы и, наконец все двойкидополнительный массив не использовать) .
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
begin
var a:=ArrRandom(ReadInteger('n='),0,2); a.Println;
a.Sorted.Println
end.
Тестовое решение:
n= 15
1 2 0 2 2 0 2 0 2 0 0 1 0 0 2
0 0 0 0 0 0 0 1 1 2 2 2 2 2 2
2. Но, поскольку считается, что школьникам больше заняться нечем, их заставляют писать примерно в таком стиле (и время займет, и ощибок понаделают):
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016
const
nn=100;
var
i,j,n,t:integer;
a:array[1..nn] of integer;
begin
Write('n='); Read(n);
Randomize;
for i:=1 to n do begin
a[i]:=Random(3);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-1 do
if a[j]>a[j+1] then begin
t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t
end;
for i:=1 to n do Write(a[i],' ');
Writeln;
end.
Тестовое решение:
n=15
0 1 1 0 2 1 0 2 1 2 1 0 0 2 0
0 0 0 0 0 0 1 1 1 1 1 2 2 2 2