fork(1) download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. ios_base::sync_with_stdio(0);
  10. int t, p;
  11. long long n, nt, mm;
  12. double tmm;
  13. vector <int> v;
  14.  
  15. cin >> t;
  16. while(t--)
  17. {
  18. cin >> n >> p;
  19.  
  20. tmm = pow(double(2), double(p - 1));
  21. mm = (long long)(floor(tmm));
  22.  
  23. if(n < (-1)*mm)
  24. {
  25. cout << "niewykonalne" << endl;
  26. continue;
  27. }
  28.  
  29. if(n > mm - 1)
  30. {
  31. cout << "niewykonalne" << endl;
  32. continue;
  33. }
  34.  
  35. if(n == 0)
  36. {
  37. for(int i = 1; i <= p; i++)
  38. cout << 0;
  39. cout << endl;
  40. }
  41.  
  42. else if(n > 0)
  43. {
  44. nt = n;
  45.  
  46. while(nt)
  47. {
  48. int c = nt % 2;
  49. v.push_back(c);
  50. nt /= 2;
  51. }
  52.  
  53. v.push_back(0);
  54.  
  55. if(v.size() > p)
  56. {
  57. cout << "niewykonalne" << endl;
  58. continue;
  59. }
  60.  
  61. if(v.size() < p)
  62. {
  63. int d = p - v.size();
  64. for(int i = 0; i < d; i++)
  65. v.push_back(0);
  66. }
  67.  
  68. for(int i = v.size() - 1; i >= 0; i--)
  69. cout << v[i];
  70. cout << endl;
  71. v.clear();
  72. }
  73.  
  74. else if(n < 0)
  75. {
  76. tmm = pow(double(2), double(p));
  77. mm = (long long)(floor(tmm));
  78.  
  79. nt = mm + n;
  80.  
  81. while(nt)
  82. {
  83. int c = nt % 2;
  84. v.push_back(c);
  85. nt /= 2;
  86. }
  87.  
  88. if(v.size() > p)
  89. {
  90. cout << "niewykonalne" << endl;
  91. continue;
  92. }
  93.  
  94. if(v.size() < p)
  95. {
  96. int d = p - v.size();
  97. for(int i = 0; i < d; i++)
  98. v.push_back(1);
  99. }
  100.  
  101. for(int i = v.size() - 1; i >= 0; i--)
  102. cout << v[i];
  103. cout << endl;
  104. v.clear();
  105. }
  106. }
  107. return 0;
  108. }
  109.  
Success #stdin #stdout 0s 15240KB
stdin
1
1 100
stdout
niewykonalne