Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int LargestPalindrome(int n)
- {
- // 相乘的最大位數(最小位數就再減一即可)
- int maxDigits = n + n;
- // 單一數字最大及最小值
- long maxValueOneNumber = (long)Math.Pow(10, n);
- long minValueOneNumber = maxValueOneNumber / 10;
- maxValueOneNumber -= 1;
- // 由大到小產生回文的值並判斷能否整除 (偶數位數的情況)
- for (long halfValue = maxValueOneNumber; halfValue >= minValueOneNumber; halfValue--)
- {
- // 透過半邊的數字產出回文值 如987產生987789
- long value = long.Parse(halfValue.ToString() + new string(halfValue.ToString().Reverse().ToArray()));
- for (long nDigitValue = maxValueOneNumber; nDigitValue >= minValueOneNumber; nDigitValue--)
- {
- if(value % nDigitValue == 0)
- {
- long r = value / nDigitValue;
- if (r >= minValueOneNumber && r <= maxValueOneNumber)
- return (int)(value % 1337);
- }
- }
- }
- // 由大到小產生回文的值並判斷能否整除 (奇數位數的情況)
- for (long halfValue = maxValueOneNumber; halfValue >= minValueOneNumber; halfValue--)
- {
- // 透過半邊的數字產出回文值放在陣列中 如987產生98789
- long value = long.Parse(halfValue.ToString() + new string(halfValue.ToString().Substring(0, n-1).Reverse().ToArray()));
- for (long nDigitValue = maxValueOneNumber; nDigitValue >= minValueOneNumber; nDigitValue--)
- {
- if (value % nDigitValue == 0)
- {
- long r = value / nDigitValue;
- if (r >= minValueOneNumber && r <= maxValueOneNumber)
- return (int)(value % 1337);
- }
- }
- }
- return -1;
- }
Add Comment
Please, Sign In to add comment