function NearestParindromeNumber([BigInt]$n)
{
if ($n -match "^10+$") {return ($n - 1), ($n + 1)}
$s = [String]$n
$i = ($s.length + ($s.length % 2)) / 2 - 1
$j = $i - $s.length % 2
$a = -join $s[0..$i]
$b = -join $a[$j..0]
$x = [BigInt]($a + $b)
if ($x -eq $n) {return $x}
$a = [String]([BigInt]$a + @(-1, 1)[$x -lt $n])
$b = -join $a[$j..0]
$y = [BigInt]($a + $b)
switch ([BigInt]::Abs($x - $n) - [BigInt]::Abs($y - $n)) {
{$_ -lt 0} {return $x}
{$_ -eq 0} {return $x, $y}
{$_ -gt 0} {return $y}
}
}
$q = 0, 17, 100, 123459321, [BigInt]"31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
foreach ($n in $q) {"[$((NearestParindromeNumber $n) -join ", ")]"}
ZnVuY3Rpb24gTmVhcmVzdFBhcmluZHJvbWVOdW1iZXIoW0JpZ0ludF0kbikKewogICAgaWYgKCRuIC1tYXRjaCAiXjEwKyQiKSB7cmV0dXJuICgkbiAtIDEpLCAoJG4gKyAxKX0KCiAgICAkcyA9IFtTdHJpbmddJG4KICAgICRpID0gKCRzLmxlbmd0aCArICgkcy5sZW5ndGggJSAyKSkgLyAyIC0gMQogICAgJGogPSAkaSAtICRzLmxlbmd0aCAlIDIKICAgICRhID0gLWpvaW4gJHNbMC4uJGldCiAgICAkYiA9IC1qb2luICRhWyRqLi4wXQogICAgJHggPSBbQmlnSW50XSgkYSArICRiKQogICAgaWYgKCR4IC1lcSAkbikge3JldHVybiAkeH0KCiAgICAkYSA9IFtTdHJpbmddKFtCaWdJbnRdJGEgKyBAKC0xLCAxKVskeCAtbHQgJG5dKQogICAgJGIgPSAtam9pbiAkYVskai4uMF0KICAgICR5ID0gW0JpZ0ludF0oJGEgKyAkYikKICAgIHN3aXRjaCAoW0JpZ0ludF06OkFicygkeCAtICRuKSAtIFtCaWdJbnRdOjpBYnMoJHkgLSAkbikpIHsKICAgICAgICB7JF8gLWx0IDB9IHtyZXR1cm4gJHh9CiAgICAgICAgeyRfIC1lcSAwfSB7cmV0dXJuICR4LCAkeX0KICAgICAgICB7JF8gLWd0IDB9IHtyZXR1cm4gJHl9CiAgICB9Cn0KCiRxID0gMCwgMTcsIDEwMCwgMTIzNDU5MzIxLCBbQmlnSW50XSIzMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1ODIwOTc0OTQ0NTkyMzA3ODE2NDA2Mjg2MjA4OTk4NjI4MDM0ODI1MzQyMTE3MDY3OTgyMTQ4MDg2NTEzMjgyMzA2NjQ3MDkzODQ0NjA5NTUwNTgyMjMxNzI1MzU5NDA4MTI4NDgxMTE3NDUwMjg0MTAyNzAxOTM4NTIxMTA1NTU5NjQ0NjIyOTQ4OTU0OTMwMzgxOTY0NDI4ODEwOTc1NjY1OTMzNDQ2MTI4NDc1NjQ4MjMzNzg2NzgzMTY1MjcxMjAxOTA5MTQ1NjQ4NTY2OTIzNDYwMzQ4NjEwNDU0MzI2NjQ4MjEzMzkzNjA3MjYwMjQ5MTQxMjczNzI0NTg3MDA2NjA2MzE1NTg4MTc0ODgxNTIwOTIwOTYyODI5MjU0MDkxNzE1MzY0MzY3ODkyNTkwMzYwMDExMzMwNTMwNTQ4ODIwNDY2NTIxMzg0MTQ2OTUxOTQxNTExNjA5NDMzMDU3MjcwMzY1NzU5NTkxOTUzMDkyMTg2MTE3MzgxOTMyNjExNzkzMTA1MTE4NTQ4MDc0NDYyMzc5OTYyNzQ5NTY3MzUxODg1NzUyNzI0ODkxMjI3OTM4MTgzMDExOTQ5MTI5ODMzNjczMzYyNDQwNjU2NjQzMDg2MDIxMzk0OTQ2Mzk1MjI0NzM3MTkwNzAyMTc5ODYwOTQzNzAyNzcwNTM5MjE3MTc2MjkzMTc2NzUyMzg0Njc0ODE4NDY3NjY5NDA1MTMyMDAwNTY4MTI3MTQ1MjYzNTYwODI3Nzg1NzcxMzQyNzU3Nzg5NjA5MTczNjM3MTc4NzIxNDY4NDQwOTAxMjI0OTUzNDMwMTQ2NTQ5NTg1MzcxMDUwNzkyMjc5Njg5MjU4OTIzNTQyMDE5OTU2MTEyMTI5MDIxOTYwODY0MDM0NDE4MTU5ODEzNjI5Nzc0NzcxMzA5OTYwNTE4NzA3MjExMzQ5OTk5OTk4MzcyOTc4MDQ5OTUxMDU5NzMxNzMyODE2MDk2MzE4NTk1MDI0NDU5NDU1MzQ2OTA4MzAyNjQyNTIyMzA4MjUzMzQ0Njg1MDM1MjYxOTMxMTg4MTcxMDEwMDAzMTM3ODM4NzUyODg2NTg3NTMzMjA4MzgxNDIwNjE3MTc3NjY5MTQ3MzAzNTk4MjUzNDkwNDI4NzU1NDY4NzMxMTU5NTYyODYzODgyMzUzNzg3NTkzNzUxOTU3NzgxODU3NzgwNTMyMTcxMjI2ODA2NjEzMDAxOTI3ODc2NjExMTk1OTA5MjE2NDIwMTk4OSIKCmZvcmVhY2ggKCRuIGluICRxKSB7IlskKChOZWFyZXN0UGFyaW5kcm9tZU51bWJlciAkbikgLWpvaW4gIiwgIildIn0=
LS0g5a6f6KGM57WQ5p6cIC0tClswXQpbMjJdCls5OSwgMTAxXQpbMTIzNDU0MzIxLCAxMjM0NjQzMjFdClszMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1ODIwOTc0OTQ0NTkyMzA3ODE2NDA2Mjg2MjA4OTk4NjI4MDM0ODI1MzQyMTE3MDY3OTgyMTQ4MDg2NTEzMjgyMzA2NjQ3MDkzODQ0NjA5NTUwNTgyMjMxNzI1MzU5NDA4MTI4NDgxMTE3NDUwMjg0MTAyNzAxOTM4NTIxMTA1NTU5NjQ0NjIyOTQ4OTU0OTMwMzgxOTY0NDI4ODEwOTc1NjY1OTMzNDQ2MTI4NDc1NjQ4MjMzNzg2NzgzMTY1MjcxMjAxOTA5MTQ1NjQ4NTY2OTIzNDYwMzQ4NjEwNDU0MzI2NjQ4MjEzMzkzNjA3MjYwMjQ5MTQxMjczNzI0NTg3MDA2NjA2MzE1NTg4MTc0ODgxNTIwOTIwOTYyODI5MjU0MDkxNzE1MzY0MzY3ODkyNTkwMzYwMDExMzMwNTMwNTQ4ODIwNDY2NTIxMzg0MTQ2OTUxOTQxNTExNjA5NDMzMDU3MjcwMzY1NzU5NTkxOTUzMDkyMTg2MTE3MzgxOTMyNjExNzkzMTA1MTE4NTQ4MDc0NDYyMzc5OTYyNzQ5NTY3MzUxODg1NzUyNzI0ODkxMjI3OTM4MTgzMDExOTQ5MTMxOTQ5MTEwMzgxODM5NzIyMTk4NDI3MjU3NTg4MTUzNzY1OTQ3MjY5OTczMjY0NDcwODQ1ODExNTAxMzk3MTE2MjM5MTgzNzExNjgxMjkwMzU5MTk1OTU3NTYzMDcyNzUwMzM0OTA2MTE1MTQ5MTU5NjQxNDgzMTI1NjY0MDI4ODQ1MDM1MDMzMTEwMDYzMDk1Mjk4NzYzNDYzNTE3MTkwNDUyOTI4MjY5MDI5MDI1MTg4NDcxODg1NTEzNjA2NjAwNzg1NDI3MzcyMTQxOTQyMDYyNzA2MzkzMzEyODQ2NjIzNDU0MDE2ODQzMDY0MzI5NjY1ODQ2NTQxOTA5MTAyMTcyNTYxMzg3Njg3MzMyODQ2NTc0ODIxNjQ0MzM5NTY2NTc5MDE4ODI0NDY5MTgzMDM5NDU5ODQ5MjI2NDQ2OTU1NTAxMTI1ODM5MTA3MjAxNDgyMDU0NzExMTg0ODIxODA0OTUzNTI3MTMyMjg1MDU1OTA2NDQ4MzkwNzQ2NjAzMjgyMzE1NjgwODQxMjg5NzYwNzExMjQzNTI4NDMwODI2ODk5ODAyNjgyNjA0NjE4NzAzMjk1NDQ5NDc5MDI4NTAxNTczOTkzOTYxNzkxNDg4MjA1OTcyMzgzMzQ2MjY0ODMyMzk3OTg1MzU2Mjk1MTQxM10=
-- 実行結果 --
[0]
[22]
[99, 101]
[123454321, 123464321]
[31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491319491103818397221984272575881537659472699732644708458115013971162391837116812903591959575630727503349061151491596414831256640288450350331100630952987634635171904529282690290251884718855136066007854273721419420627063933128466234540168430643296658465419091021725613876873328465748216443395665790188244691830394598492264469555011258391072014820547111848218049535271322850559064483907466032823156808412897607112435284308268998026826046187032954494790285015739939617914882059723833462648323979853562951413]