fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #pragma region Macros
  5. #define Faster ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  6. #define ll long long
  7. #define ld long double
  8. #define pii pair<int, int>
  9. #define pll pair<long long, long long>
  10. #define all(x) x.begin(), x.end()
  11. #define rall(x) x.rbegin(), x.rend()
  12. #define pb push_back
  13. #define ff first
  14. #define ss second
  15. #define endl '\n'
  16. #define yes cout << "YES" << endl
  17. #define no cout << "NO" << endl
  18. #define m1 cout << -1 << endl
  19. #pragma endregion
  20.  
  21. #pragma region Math
  22. const ll MOD = 1e9 + 7;
  23. ll gcd(ll a, ll b) { return __gcd(a, b); }
  24. ll lcm(ll a, ll b) { return (a / gcd(a, b)) * b; }
  25. #pragma endregion
  26.  
  27. void solve() {
  28. int a,b; cin>>a>>b;
  29. if(a==b) {
  30. cout<<0<<endl;
  31. return;
  32. }
  33. int msb_a, msb_b;
  34. for(int i=32;i>=0;i--){
  35. if(1LL<<i & a){
  36. msb_a=i;
  37. break;
  38. }
  39. }
  40. for(int i=32;i>=0;i--){
  41. if(1LL<<i & b){
  42. msb_b=i;
  43. break;
  44. }
  45. }
  46. if(msb_a<msb_b) {
  47. cout<<-1<<endl;
  48. return;
  49. }
  50. vector<int>ans;
  51. for(int i=0;i<=max(msb_a,msb_b);i++){
  52. if((1LL<<i & a) and !(1LL<<i & b)){
  53. ans.push_back(1LL<<i);
  54. }
  55. else if(!(1LL<<i & a) and (1LL<<i & b)){
  56. ans.push_back(1LL<<i);
  57. }
  58. }
  59. cout<<ans.size()<<endl;
  60. for(auto x:ans)
  61. cout<<x<<" ";
  62. cout<<endl;
  63. }
  64.  
  65. int main() {
  66. Faster;
  67. int t = 1;
  68. cin >> t;
  69. while (t--) solve();
  70. return 0;
  71. }
Success #stdin #stdout 0s 5316KB
stdin
1
9 6
stdout
4
1 2 4 8