Advertisement
GerONSo

Untitled

Dec 5th, 2018
93
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(x) memset(x, 0, sizeof(x))
  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 ordered_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 1
  63. freopen("input", "r", stdin);
  64. freopen("output", "w", stdout);
  65. #endif
  66. }
  67.  
  68. const int MOD = 1e9 + 7;
  69.  
  70. signed main() {
  71. seriy();
  72. string s;
  73. cin >> s;
  74. int n = s.size();
  75. int dp[n][10];
  76. memset(dp, 0ll, sizeof(dp));
  77. for(int i = 1; i < (s[0] - '0'); i++) {
  78. dp[0][i] = 1;
  79. }
  80. for(int i = 1; i < n; i++) {
  81. for(int j = 0; j <= (s[i] - '0'); j++) {
  82. for(int k = 0; k < 10; k++) {
  83. int cur = s[i] - '0', prev = s[i - 1] - '0';
  84. if(j == k || cur - j == prev - k) {
  85. continue;
  86. }
  87. dp[i][j] += dp[i - 1][k];
  88. dp[i][j] %= MOD;
  89. }
  90. }
  91. }
  92. int ans = 0;
  93. for(int i = 0; i < 10; i++) {
  94. ans += dp[n - 1][i];
  95. }
  96. cout << ans;
  97. return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement