fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4.  
  5. int ans[500005];
  6.  
  7. void precomp(){
  8. for(int i = 2; i <= 500000; i++)ans[i] = 1e13;
  9.  
  10. ans[1] = 1;
  11. for(int i = 3; i <= 500000; i+=2){
  12. ans[i] = min(ans[i], ans[i-2]+1);
  13. for(int j = 3; i*j <= 500000 && j <= i; j++){
  14. ans[i*j] = min(ans[i*j], ans[j-2] + ans[i]);
  15. }
  16. }
  17.  
  18. for(int i = 2; i <= 500000; i++)ans[i] = (ans[i] == 1e13? -1:ans[i]);
  19. }
  20.  
  21. void fun(){
  22. int m;
  23. cin >> m;
  24. cout << ans[m] << '\n';
  25. }
  26.  
  27. main() {
  28. precomp();
  29. int t; cin >> t;
  30. while(t--)fun();
  31. }
Success #stdin #stdout 0.02s 7356KB
stdin
6
1
3
5
7
9
25
stdout
1
2
3
4
3
5