fork download
  1. #include<bits//stdc++.h>
  2. using namespace std;
  3. int visited[5];
  4. vector<string>vec1;
  5. vector<string>vec;
  6. map<int,set<string>>mp;
  7. map<string,int>mp1;
  8. void getans(int index, string & s1, string &s2)
  9. {
  10. if(index==5)
  11. {
  12. mp1[s2]=1;
  13. vec1.push_back(s2);
  14. return;
  15. }
  16. for(int i=0;i<5;i++)
  17. {
  18. if(visited[i]==1) continue;
  19. else
  20. {
  21. s2+=s1[i];
  22. visited[i]=1;
  23. getans(index+1,s1,s2);
  24. visited[i]=0;
  25. s2.pop_back();
  26. }
  27. }
  28. return;
  29. }
  30. void getans1(int index,string & s)
  31. {
  32. if(index==5)
  33. {
  34. vec.push_back(s);
  35. return;
  36. }
  37. for(int i='0';i<='9';i++)
  38. {
  39. s+=i;
  40. getans1(index+1,s);
  41. s.pop_back();
  42. }
  43. }
  44. int main()
  45. {
  46. memset(visited,0,sizeof(visited));
  47. string s;
  48. vec1.clear();
  49. getans1(0,s);
  50. s.clear();
  51. for(int i=0;i<vec.size();i++)
  52. {
  53. if(mp1[vec[i]]) continue;
  54. vec1.clear();
  55. getans(0,vec[i],s);
  56. int sum=0;
  57. for(int j=0;j<vec1.size();j++)
  58. sum+=stoi(vec1[j]);
  59. for(int j=0;j<vec1.size();j++)
  60. {
  61. int x=stoi(vec1[j]);
  62. mp[sum-x].insert(vec1[j]);
  63. }
  64. }
  65. int x;
  66. while(cin>>x)
  67. {
  68. for(auto child:mp[x])
  69. cout<<child<<" ";
  70. cout<<endl;
  71. }
  72. return 0;
  73. }
Success #stdin #stdout 0.14s 31576KB
stdin
2933266
6392217
4245386
stdout
00038 
07719 
21238