fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. int ans;
  7. cin >> n; //считываем сумму, для которой будем считать количество перестановок
  8. long long a[n+1]; //создаем массив
  9. if (n == 1) ans = 1;
  10. if (n == 2) ans = 2;
  11. if (n == 3) ans = 4;
  12. if (n == 4) ans = 8;
  13. if (n == 5) ans = 16;
  14. if (n == 6) ans = 32;
  15. // частные случаи
  16.  
  17. if (n > 6)
  18. {
  19. a[1] = 1;
  20. a[2] = 2;
  21. a[3] = 4;
  22. a[4] = 8;
  23. a[5] = 16;
  24. a[6] = 32;
  25. for (int i = 7; i < n + 1; i++)
  26. {
  27. a[i]=0;
  28. for (int j = 1; j < 7; j++) // вычисление количества для i-ой суммы
  29. a[i] = ( a[i] + a[i-j] ) % 1000000007;
  30. }
  31. ans = a[n];
  32. }
  33.  
  34. cout << ans;
  35. return 0;
  36. }
Success #stdin #stdout 0s 4480KB
stdin
5
stdout
16