Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include "math.h"
  3. #include <stdio.h>
  4. #include <iostream>
  5. #include <vector>
  6. #include <time.h>
  7. #include <algorithm>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. int t = clock();
  14. unsigned short int k;
  15. unsigned short int N;
  16. cin >> k;
  17. cin >> N;
  18. vector < pair < int, int > > SecVec(N);
  19. vector < vector < int > > FirVec(3);
  20. FirVec[0].resize(1);
  21. FirVec[1].resize(1);
  22. FirVec[0] = { 1 };
  23. FirVec[1] = { 1 };
  24. unsigned int X = pow(k, 5);
  25. vector < unsigned int > S(X);
  26. for (unsigned int i = 0, l = 0; i < X; i++, l++)
  27. {
  28. int sum = 0;
  29. while (l > 0)
  30. {
  31. sum += l % k;
  32. l /= k;
  33. }
  34. S[l] = (unsigned int)sum;
  35. }
  36. for (unsigned short int i = 0; i < N; i++)
  37. {
  38. unsigned int sum = 0;
  39. if (i < N - 2)
  40. {
  41. unsigned short int length = FirVec[1].size();
  42. FirVec[2].resize(length);
  43. for (unsigned short int j = 0; j < FirVec[0].size(); j++)
  44. {
  45. FirVec[2][j] = FirVec[0][j] + FirVec[1][j];
  46. sum += FirVec[0][j];
  47. }
  48. if (length > FirVec[0].size())
  49. {
  50. FirVec[2][length - 1] = FirVec[1][length - 1];
  51. }
  52. for (unsigned int j = 0; j < length - 1; j++)
  53. {
  54. if ((unsigned short int)FirVec[2][j] >= k)
  55. {
  56. FirVec[2][j] = FirVec[2][j] - k;
  57. FirVec[2][j + 1] = (FirVec[2][j + 1] + 1);
  58. }
  59. }
  60. if ((unsigned short)FirVec[2][length - 1] >= k)
  61. {
  62. FirVec[2][(length - 1)] = FirVec[2][length - 1] - k;
  63. FirVec[2].push_back(1);
  64. }
  65. SecVec[i] = make_pair(sum, i);
  66. FirVec[0] = FirVec[1];
  67. FirVec[1] = FirVec[2];
  68. }
  69. else
  70. {
  71. if (i == N - 2)
  72. {
  73. for (unsigned int j = 0; j < FirVec[0].size(); j++)
  74. {
  75. sum += FirVec[0][j];
  76. }
  77. SecVec[i] = make_pair(sum, i);
  78. }
  79. else
  80. {
  81. for (unsigned int j = 0; j < FirVec[1].size(); j++)
  82. {
  83. sum += FirVec[1][j];
  84. }
  85. SecVec[i] = make_pair(sum, i);
  86. }
  87. }
  88. }
  89. FirVec.clear();
  90. FirVec.shrink_to_fit();
  91. for (unsigned short int i = 0; i < N; i++)
  92. {
  93. cout << SecVec[i].first << " ";
  94. }
  95. sort(SecVec.begin(), SecVec.end());
  96. for (unsigned short int i = 0; i < N - 1; i++)
  97. {
  98. cout << (SecVec[i].second + 1) << " ";
  99. }
  100. cout << (SecVec[N - 1].second + 1);
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement