using
System;
using
System.Collections.Generic;
class
GFG
{
static
int
gcd(
int
x,
int
y)
{
if
(x == 0)
return
y;
return
gcd(y % x, x);
}
static
int
log1(
int
x,
int
b)
{
return
(
int
)(Math.Log(x) / Math.Log(b));
}
static
int
getNP(
int
x,
int
y)
{
if
(y == 1)
return
1;
int
k = (
int
)(log1(x, y));
if
(Math.Abs(Math.Pow(y, k) - x)
< Math.Abs(Math.Pow(y, (k + 1)) - x))
return
(
int
)(Math.Pow(y, k));
return
(
int
)(Math.Pow(y, (k + 1)));
}
static
List<
int
> modifyEle(List<
int
> arr)
{
int
prevGCD = arr[0];
for
(
int
i = 1; i < arr.Count; i++) {
int
NP = getNP(arr[i], prevGCD);
prevGCD = gcd(arr[i], prevGCD);
arr[i] = NP;
}
return
arr;
}
public
static
void
Main(
string
[] args)
{
List<
int
> arr =
new
List<
int
>() { 4, 2, 8, 2 };
List<
int
> ans =
new
List<
int
>();
ans = modifyEle(arr);
Console.Write(
"["
);
for
(
int
i = 0; i < ans.Count; i++)
if
(i < ans.Count - 1)
Console.Write(ans[i] +
", "
);
else
Console.Write(ans[i]);
Console.Write(
"]"
);
}
}