Guest User

Untitled

a guest
Aug 14th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. public int LargestPalindrome(int n)
  2. {
  3. // 相乘的最大位數(最小位數就再減一即可)
  4. int maxDigits = n + n;
  5.  
  6. // 單一數字最大及最小值
  7. long maxValueOneNumber = (long)Math.Pow(10, n);
  8. long minValueOneNumber = maxValueOneNumber / 10;
  9. maxValueOneNumber -= 1;
  10.  
  11. // 由大到小產生回文的值並判斷能否整除 (偶數位數的情況)
  12. for (long halfValue = maxValueOneNumber; halfValue >= minValueOneNumber; halfValue--)
  13. {
  14. // 透過半邊的數字產出回文值 如987產生987789
  15. long value = long.Parse(halfValue.ToString() + new string(halfValue.ToString().Reverse().ToArray()));
  16. for (long nDigitValue = maxValueOneNumber; nDigitValue >= minValueOneNumber; nDigitValue--)
  17. {
  18. if(value % nDigitValue == 0)
  19. {
  20. long r = value / nDigitValue;
  21. if (r >= minValueOneNumber && r <= maxValueOneNumber)
  22. return (int)(value % 1337);
  23. }
  24. }
  25. }
  26.  
  27. // 由大到小產生回文的值並判斷能否整除 (奇數位數的情況)
  28. for (long halfValue = maxValueOneNumber; halfValue >= minValueOneNumber; halfValue--)
  29. {
  30. // 透過半邊的數字產出回文值放在陣列中 如987產生98789
  31. long value = long.Parse(halfValue.ToString() + new string(halfValue.ToString().Substring(0, n-1).Reverse().ToArray()));
  32. for (long nDigitValue = maxValueOneNumber; nDigitValue >= minValueOneNumber; nDigitValue--)
  33. {
  34. if (value % nDigitValue == 0)
  35. {
  36. long r = value / nDigitValue;
  37. if (r >= minValueOneNumber && r <= maxValueOneNumber)
  38. return (int)(value % 1337);
  39. }
  40. }
  41. }
  42. return -1;
  43. }
Add Comment
Please, Sign In to add comment