Advertisement
a53

Fibonacci3

a53
Mar 22nd, 2020
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin ("fibonacci3.in");
  4. ofstream fout ("fibonacci3.out");
  5. typedef unsigned long long ull;
  6. const int mod = 100003, N = 26;
  7. int n, x[N];
  8. ull a[N], ans;
  9. vector <ull> H[mod + 1];
  10.  
  11. void Insert(ull val)
  12. {
  13. ull key = val % mod;
  14.  
  15. for (auto it : H[key])
  16. if (it == val)
  17. return;
  18. H[key].push_back(val);
  19. }
  20.  
  21. bool FindHash(ull val)
  22. {
  23. ull key = val % mod;
  24.  
  25. for (auto it : H[key])
  26. if (it == val)
  27. return 1;
  28. return 0;
  29. }
  30.  
  31. void Back(int k, ull sum)
  32. {
  33. for (int i = x[k - 1] + 1; i <= n; i++)
  34. {
  35. x[k] = i;
  36.  
  37. if (FindHash(sum + a[i]))
  38. ans++;
  39.  
  40. if (k < n)
  41. Back(k + 1, sum + a[i]);
  42. }
  43. }
  44.  
  45. int main()
  46. {
  47. fin >> n;
  48. for (int i = 1; i <= n; i++)
  49. fin >> a[i];
  50.  
  51. H[0].push_back(0);
  52. ull a = 0, b = 1, c;
  53. for (; ULLONG_MAX - b >= a;)
  54. {
  55. c = a + b;
  56. a = b;
  57. b = c;
  58. Insert(c);
  59. }
  60.  
  61. Back(1, 0);
  62.  
  63. fout << ans;
  64. return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement