fork download
  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. bool f(int n)
  6. {
  7. long long m = 1LL * n * n;
  8.  
  9. while (n)
  10. {
  11. if (n % 10 != m % 10) return false;
  12. n /= 10;
  13. m /= 10;
  14. }
  15.  
  16. return true;
  17. }
  18.  
  19. int main()
  20. {
  21. vector<int> L;
  22. for (int i = 0; i < 100000; i++)
  23. {
  24. long long n = i, m = 1LL * i * i;
  25. bool chk = true;
  26. for (int j = 0; j < 5; j++)
  27. {
  28. if (n % 10 != m % 10) chk = false;
  29. n /= 10;
  30. m /= 10;
  31. }
  32.  
  33. if (chk) L.push_back(i);
  34. }
  35.  
  36. long long N, ans = 0;
  37. cin >> N;
  38. for (int i = 0; i < 100000 && i < N; i++)
  39. if (f(i)) ans = i;
  40.  
  41. if (N >= 100000)
  42. {
  43. for (long long i = 100000; i <= N; i += 100000)
  44. {
  45. for (int j = 0; j < L.size(); j++)
  46. {
  47. long long val = i + L[j];
  48. if (val >= N) break;
  49.  
  50. if (f(val)) ans = val;
  51. }
  52. }
  53. }
  54. cout << ans;
  55. return 0;
  56. }
Success #stdin #stdout 0s 15240KB
stdin
2147483647
stdout
1787109376