using
System;
using
System.Collections.Generic;
public
class
palindrome_selfie
{
HashSet<
int
> all_permutes =
new
HashSet<
int
>();
int
number;
public
palindrome_selfie(
int
num)
{
number = num;
}
public
int
palindrome(
int
num)
{
int
reversednum = 0;
int
d;
while
(num > 0)
{
d = num % 10;
reversednum = reversednum * 10 + d;
num = num / 10;
}
return
reversednum;
}
public
void
palin_selfie()
{
int
l = String.Join(
""
,number).Length - 1;
this
.permute(number, 0, l);
all_permutes.Remove(palindrome(number));
all_permutes.Remove(number);
bool
flag =
false
;
foreach
(
var
number2
in
all_permutes)
{
if
(number * palindrome(number) ==
number2 * palindrome(number2))
{
Console.WriteLine(
"Palindrome multiplicative"
+
"selfie of "
+ number +
" is : "
+ number2);
flag =
true
;
break
;
}
}
if
(flag ==
false
)
{
Console.WriteLine(
"Given number has "
+
"no palindrome selfie."
);
}
}
public
void
permute(
int
num,
int
l,
int
r)
{
if
(l == r)
all_permutes.Add(num);
else
{
for
(
int
i = l; i <= r; i++)
{
num = swap(num, l, i);
permute(num, l + 1, r);
num = swap(num, l, i);
}
}
}
public
int
swap(
int
num,
int
i,
int
j)
{
char
temp;
char
[] charArray = String.Join(
""
,num).ToCharArray();
temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
return
int
.Parse(String.Join(
""
,charArray));
}
public
static
void
Main(String []args)
{
palindrome_selfie example1 =
new
palindrome_selfie(145572);
example1.palin_selfie();
palindrome_selfie example2 =
new
palindrome_selfie(19362);
example2.palin_selfie();
palindrome_selfie example3 =
new
palindrome_selfie(4669);
example3.palin_selfie();
}
}