Алиса и Боб стали королями в королевствах на множестве натуральных чисел. Подданными Алисы являются все натуральные числа, которые делятся на 3 без остатка, а все остальные числа стали подданными Боба. Алиса дружит с Бобом, и они хотят, чтобы их подданные тоже дружили между собой. Они разбили все числа на пары, причем ii-тое по порядку число из королевства Алисы будет дружить с ii-тым по порядку числом из королевства Боба. Вам задан набор из nn чисел. Напишите программу для нахождения друга каждого из чисел. Первые 10 чисел из королевства Алисы — это \{3,6,9,12,15,18,21,24,27,30,\ldots\}{3,6,9,12,15,18,21,24,27,30,…} Первые 10 чисел из королевства Боба —это \{1,2,4,5,7,8,10,11,13,14,\ldots\}{1,2,4,5,7,8,10,11,13,14,…}. Таким образом, парами друзей являются (3,1)(3,1) (6,2)(6,2) (9,4)(9,4) и так далее.
Формат входных данных
На вход в первой строке подается натуральное число nn — количество чисел в наборе. 1\leq n\leq 10^51≤n≤10
5
. Во второй строке через пробел подается nn натуральных чисел a_1,a_2,\ldots,a_na
1
,a
2
,…,a
n
. Числа не превосходят 10^{18}10
18
. Обратите внимание, что для хранения таких чисел в программе на С++ вам потребуется тип long long. В программе на PascalABC такой тип называется Int64.
Формат выходных данных
Программа должна вывести через пробел nn натуральных чисел b_1,b_2,\ldots,b_nb
1
,b
2
,…,b
n
. Число b_ib
i
должно быть другом числа a_ia
i
.
Если вы программируете на Python, то заменить перенос строки на пробел в функции print можно при именованного параметра end, например print(a,end=' ').
Методика проверки
Программа проверяется на 20 тестах. Прохождение каждого теста оценивается в Тест из условия задачи при проверке не используется. В первых 5 тестах n\leq10n≤10, a_i\leq 1000a
i
≤1000. В следующих пяти тестах n\leq 10^5n≤10
5
, a_i\leq 10^6a
i
≤10
6
. В последних 10 тестах a_i\leq10^{18}a
i
≤10
18
.
Sample Input:
10
1 2 3 4 5 6 7 8 9 10
Sample Output:
3 6 1 9 12 2 15 18 4 21
Напишите программу
языки на выбор
C#
Java
Python
Pascal
function
Transpose(a: array[,] of integer): array[,] of integer;
//Поворот на 90гр по часовой стрелке
begin
var m := Length(a, 0);
var n := Length(a, 1);
Result := new integer[n, m];
for var i := 0 to n-1 do begin
for var j := 0 to m-1 do
Result[i, j] := a[m-1-j, i];
end;
end;
begin
var n := ReadInteger('Введите n:');
//Заполнение матрицы NxN сл. числами и вывод на экран
var a :=MatrixRandom(n, n);
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
Print(a[i,j]);
println;
end;
println;
Println('поворот влево на 90 гр');
var b := Transpose(a);
b:=Transpose(b);
b:=Transpose(b);
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
Print(b[i,j]);
println;
end;
println;
Println('поворот вправо на 90гр');
b := Transpose(a);
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
Print(b[i,j]);
println;
end;
println;
Println('поворот на 180 гр');
b := Transpose(a);
b := Transpose(b);
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
Print(b[i,j]);
println;
end;
end.
// 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