fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. pair<int, int> check(int value, int guess) {
  7. pair<int, int> r{0, 0};
  8. int vd[10] = {0}, gd[10] = {0};
  9.  
  10. while (value || guess) {
  11. int dv = value % 10, dg = guess % 10;
  12.  
  13. if (dv == dg) {
  14. r.first++;
  15. r.second++;
  16. }
  17. else {
  18. vd[dv]++;
  19. gd[dg]++;
  20. }
  21.  
  22. value /= 10;
  23. guess /= 10;
  24. }
  25.  
  26. for (int i = 0; i < 10; ++i)
  27. if (vd[i]) {
  28. if (gd[i]) r.second += min(vd[i], gd[i]);
  29. }
  30.  
  31. return r;
  32. }
  33.  
  34. int main() {
  35. auto s = check(761, 777);
  36. cout << "777 vs 761: ok: " << s.second << " in place: " << s.first <<
  37. endl;
  38. s = check(767, 776);
  39. cout << "776 vs 767: ok: " << s.second << " in place: " << s.first <<
  40. endl;
  41. }
  42.  
  43.  
Success #stdin #stdout 0.01s 5436KB
stdin
Standard input is empty
stdout
777 vs 761: ok: 1  in place: 1
776 vs 767: ok: 3  in place: 1