Advertisement
GerONSo

Untitled

Jan 20th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. /*
  2. ┓┏┓┏┓┃
  3. ┛┗┛┗┛┃
  4. ┓┏┓┏┓┃
  5. ┛┗┛┗┛┃
  6. ┓┏┓┏┓┃\○/
  7. ┛┗┛┗┛┃ / /
  8. ┓┏┓┏┓┃ノ
  9. ┛┗┛┗┛┃
  10. ┓┏┓┏┓┃
  11. ┛┗┛┗┛┃
  12. ┓┏┓┏┓┃
  13. ┛┗┛┗┛┃
  14. ┓┏┓┏┓┃
  15. ┛┗┛┗┛┃
  16. ┓┏┓┏┓┃┓
  17. ┛┗┛┗┛┃┃
  18. MIPTCLASSICMIPTCLASSICMIPTCLASSICMIPTCLASSICMIPTCLASSICMIPTCLASSIC
  19. */
  20.  
  21. // #define pragma
  22.  
  23. #ifdef pragma
  24. #pragma GCC optimize("Ofast")
  25. #pragma GCC optimize("no-stack-protector")
  26. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  27. #pragma GCC optimize("unroll-loops")
  28. #pragma GCC diagnostic ignored "-Wunused-result"
  29. #endif // pragma
  30.  
  31. #include<bits/stdc++.h>
  32. #include <ext/pb_ds/assoc_container.hpp>
  33. #include <ext/pb_ds/tree_policy.hpp>
  34.  
  35. #define ll long long
  36. #define all(x) begin(x), end(x)
  37. #define pb push_back
  38. #define x first
  39. #define y second
  40. #define int long long
  41. #define zero(two) memset(two, 0, sizeof(two))
  42.  
  43. using namespace std;
  44. using namespace __gnu_pbds;
  45.  
  46.  
  47. typedef vector<int> vi;
  48. typedef vector<bool> vb;
  49. typedef pair<int, int> pii;
  50. typedef long double ld;
  51. typedef vector<vi> matrix;
  52. template<typename T>
  53. using kawaii_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
  54.  
  55. const ld PI = atan2(0, -1);
  56.  
  57. void seriy() {
  58. ios::sync_with_stdio(0);
  59. cin.tie(0);
  60. cout.tie(0);
  61. cout << fixed << setprecision(10);
  62. #if _offline
  63. freopen("input.txt", "r", stdin);
  64. freopen("output.txt", "w", stdout);
  65. #endif
  66. }
  67.  
  68. const int MOD = 1e7;
  69.  
  70. signed main() {
  71. seriy();
  72. int n;
  73. cin >> n;
  74. vi a(n + 1);
  75. for(int i = 1; i <= n; i++) {
  76. cin >> a[i];
  77. a[i] %= 10;
  78. }
  79. int dp[n + 1][2][10];
  80. zero(dp);
  81. dp[0][0][0] = 1;
  82. dp[1][0][a[1]] = 1;
  83. for(int i = 1; i < n; i++) {
  84. for(int j = 0; j < 10; j++) {
  85. dp[i + 1][0][(j + a[i + 1]) % 10] += dp[i][0][j] + dp[i][1][j];
  86. }
  87. int mul = a[i + 1];
  88. for(int k = i; k >= 2; k--) {
  89. mul *= a[i];
  90. mul %= 10;
  91. dp[i + 1][1][(mul + a[k - 1]) % 10] += dp[k][0][a[k - 1]];
  92. }
  93. }
  94. for(int i = 0; i < 10; i++) {
  95. cout << dp[n][0][i] + dp[n][1][i] << " ";
  96. }
  97. return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement