fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<int>ts;
  4.  
  5. bool transform(int &a,int b) {
  6. if(a==b) {
  7. cout<<"YES"<<endl;
  8. cout<<ts.size()<<endl;
  9. for(int i=0;i<ts.size();++i) {
  10. cout<<ts[i]<<" ";
  11. }
  12. return true;
  13. }
  14. if(a>b) {
  15. return false;
  16. }
  17. ts.push_back(a*2);
  18. a=a*2;
  19. bool f=transform(a,b);
  20. a=a/2;
  21. ts.pop_back();
  22. ts.push_back(a*10+1);
  23. a=a*10+1;
  24. bool s=transform(a,b);
  25. a=a-1;
  26. a=a/10;
  27. ts.pop_back();
  28. return f || s;
  29.  
  30. }
  31.  
  32. int main() {
  33. int a,b;
  34. cin>>a>>b;
  35. ts.push_back(a);
  36. bool flag = transform(a,b);
  37. if(!flag) {
  38. cout<<"NO";
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 5288KB
stdin
100 40021
stdout
YES
5
100 200 2001 4002 40021