Guest User

Untitled

a guest
Sep 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <string>
  5. #include <cstring>
  6. #include <iomanip>
  7. #include <algorithm>
  8. #include <vector>
  9. #include <cmath>
  10. #include <cstdlib>
  11. #include <sstream>
  12. #include <stdio.h>
  13. #include <set>
  14. #include <stack>
  15. #include <map>
  16. #include <utility>
  17. #include <numeric>
  18. #include <queue>
  19. #include <complex>
  20. using namespace std;
  21. int arr[4] = {1,1,2,3 };
  22.  
  23. struct biginteger {
  24. int cc[700];
  25. biginteger() {
  26. for (int i = 1; i < 700; ++i)
  27. cc[i] = 0;
  28. cc[0] = -1;
  29. }
  30. biginteger operator + (biginteger b)const {
  31. int num = 0;
  32. biginteger tmp;
  33. tmp.cc[0]=0;
  34. int carry = 0;
  35. for (int i = 0; i < 700; ++i) {
  36. num = cc[i] + b.cc[i] + carry;
  37. if (num >= 10) {
  38. num -= 10;
  39. carry = 1;
  40. }
  41. else
  42. carry = 0;
  43. tmp.cc[i] = num;
  44. }
  45. return tmp;
  46. }
  47.  
  48. };
  49. biginteger dp[1005];
  50. void print( const biginteger n) {
  51. int t = 0;
  52. for (int i = 699; i >= 0; --i) {
  53. if (n.cc[i] != 0)
  54. {
  55. t = i; break;
  56. }
  57. }
  58. for (int i = t ; i >= 0; --i)
  59. printf("%d", n.cc[i]);
  60. printf("\n");
  61.  
  62. }
  63.  
  64. /*
  65. stack oberflow
  66. biginteger solve( int rem) {
  67. if (rem == 0) {
  68. biginteger r;
  69. r.cc[0] = 1;
  70. return r;
  71. }
  72. biginteger &ret = dp[rem];
  73. if (ret.cc[0]!=-1)
  74. return ret;
  75. ret.cc[0] = 0;
  76. for (int i = 0; i < 4; ++i) {
  77. if(rem - arr[i]>=0)
  78. ret= ret + solve(rem - arr[i]);
  79. }
  80. return ret;
  81. }*/
  82.  
  83. int main() {
  84. int d;
  85. while (cin >> d) {
  86. for (int i = 0; i <= 1000; ++i) {
  87. for (int j = 0; j < 700; ++j)
  88. dp[i].cc[j] = 0;
  89.  
  90. }
  91. dp[0].cc[0] = 2;
  92. dp[1].cc[0] = 5;
  93. dp[2].cc[0] = 3;
  94. dp[2].cc[1] = 1;
  95. for (int i = 3; i < d; ++i) {
  96. dp[i] = dp[i - 1] + dp[i - 1] + dp[i - 2] + dp[i - 3];
  97. }
  98. print(dp[d-1]);
  99.  
  100.  
  101. /*dp[0][0] = dp[1][0]= dp[2][0] = dp[3][0] = 1;
  102.  
  103. for (int idx = 0; idx < 4; ++idx) {
  104. for (int coin = 1; coin <= d; coin++ ) {
  105. if (idx)
  106. dp[idx][coin] = dp[idx-1][coin];
  107. if (coin - arr[idx] >= 0)
  108. dp[idx][coin] += dp[idx][coin - arr[idx]];
  109. }
  110. }
  111.  
  112. printf("%lld\n", dp[3][d]);*/
  113.  
  114. }
  115.  
  116.  
  117. return 0;
  118.  
  119. }
Add Comment
Please, Sign In to add comment