Advertisement
a53

maxvalue_of

a53
Jan 25th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define nmax 100005
  3. using namespace std;
  4.  
  5. char s[nmax];
  6. long long dp[nmax];
  7. int n;
  8.  
  9. /// returneaza 0 daca numarul nu e prim,
  10. /// sau returneaza numarul prim
  11. int Prim(int x, int y)
  12. {
  13. int n = 0, i;
  14. for (i = x; i <= y; i++)
  15. n = n * 10 + s[i] - '0';
  16. if (n <= 1) return 0;
  17. if (n == 2) return n;
  18. if (n % 2 == 0) return 0;
  19. for (i = 3; i * i <= n; i += 2)
  20. if (n % i == 0) return 0;
  21. return n;
  22. }
  23.  
  24. void Dinamica()
  25. {
  26. int i, j, val;
  27. dp[0] = 0;
  28. for (i = 1; i <= n; i++)
  29. {
  30. dp[i] = 0;
  31. for (j = max(1, i - 5); j <= i; j++)
  32. {
  33. val = Prim(j, i);
  34. dp[i] = max(dp[i], dp[j - 1] + val);
  35. }
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. cin >> (s + 1);
  42. n = strlen(s + 1);
  43. Dinamica();
  44. cout << dp[n] << "\n";
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement