fork(5) download
  1. //Taking numbers as 1 2 4 .. 32 to maximise xor and taking the rest as 1
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. int main() {
  6. int t;
  7. cin>>t;
  8. while(t--)
  9. {
  10. ll n,k,k1;
  11. cin>>n>>k;
  12. int b=0;
  13. k1=k;
  14. while(k1!=0)
  15. {
  16. b++;
  17. k1=k1>>1;
  18. }
  19. if(n==1)
  20. {
  21. cout<<k<<endl;
  22. continue;
  23. }
  24. if(b==1)
  25. {
  26. for(int i=0;i<n;i++)
  27. cout<<1<<" ";
  28. cout<<endl;
  29. continue;
  30. }
  31.  
  32. ll g[n];
  33. if(b==n)
  34. { ll serial=1;
  35. for(int i=0;i<b;i++)
  36. {
  37. g[i]=serial;
  38. serial=serial<<1;
  39. }
  40. }
  41. else if(b<n)
  42. {
  43. if((n-b)&1)
  44. {
  45. g[0]=1;
  46. g[1]=3;
  47. ll serial=4;
  48. int i=2;
  49. for( ;i<b;i++)
  50. {
  51. g[i]=serial;
  52. serial=serial<<1;
  53. }
  54. for(;i<n;i++)
  55. g[i]=1;
  56. }
  57. else{int i=0;ll serial=1;
  58. for(;i<b;i++)
  59. {
  60. g[i]=serial;
  61. serial=serial<<1;
  62. }
  63. for(;i<n;i++)
  64. {
  65. g[i]=1;
  66. }
  67. }
  68. }
  69. else{
  70. ll serial=1<<(b-1);
  71. for(int j=n-1;j>=1;j--)
  72. {
  73. g[j]=serial;
  74. serial=serial>>1;
  75. }
  76. serial=serial<<1;
  77. serial--;
  78. g[0]=serial;
  79. }
  80. ll tt=0;
  81. for(int i=0;i<n;i++)
  82. {
  83. cout<<g[i]<<" ";
  84. tt^=g[i];
  85. }
  86. // cout<<tt;
  87. cout<<endl;
  88. }
  89. return 0;
  90. }
Success #stdin #stdout 0s 4532KB
stdin
1
1 2
stdout
2