fork download
  1. #include <iostream>
  2. #include <queue>
  3. #include <string>
  4. using namespace std;
  5.  
  6. class State{
  7. public:
  8. int sum,rem;
  9. string str;
  10. State(int s,int r,string st){
  11. sum = s;
  12. rem = r;
  13. str = st;
  14. }
  15. };
  16.  
  17. int main() {
  18. int n,newSum,newRem;
  19. string newStr;
  20. queue<State> q;
  21. cin>>n;
  22. bool visited[1001][1001] = {0};
  23. State curr = State(0,0,"");
  24. q.push(curr);
  25. while(!q.empty()){
  26. curr = q.front();
  27. q.pop();
  28. if(curr.sum==n && curr.rem==0){
  29. cout<<curr.str<<endl;
  30. break;
  31. }
  32. if(visited[curr.sum][curr.rem]){
  33. continue;
  34. }
  35. visited[curr.sum][curr.rem] = 1;
  36. for(int j=0; j<=9; j++){
  37. newSum = curr.sum + j;
  38. newRem = (curr.rem*10+j)%n;
  39. newStr = curr.str + to_string(j);
  40. curr = State(newSum,newRem,newStr);
  41. q.push(curr);
  42. }
  43. }
  44. return 0;
  45. }
Success #stdin #stdout 0s 4320KB
stdin
10
stdout
012340