fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <cmath>
  4.  
  5.  
  6. int firstDigit(int number);
  7. int sumDigits(int number);
  8. int removeFirstDigit(int number);
  9.  
  10. int main() {
  11.  
  12. std::map<int, int> pairs;
  13.  
  14. for(int i = 1000; i <= 9999; ++i) {
  15. int stripped = firstDigit(i);
  16. int threeDigit = removeFirstDigit(i);
  17. int firstDigit3 = firstDigit(threeDigit);
  18. if ( threeDigit == sumDigits(stripped) && firstDigit3 > 0 ) {
  19. pairs[i] = threeDigit;
  20. }
  21. }
  22.  
  23. for(auto i : pairs) {
  24. int key = i.first;
  25. int value = i.second;
  26. std::cout << "1st digit of " << key << " is equal to digit summation of " << value << std::endl;
  27. }
  28.  
  29. std::cout << "There are " << pairs.size() << " combination!" << std::endl;
  30.  
  31. return 0;
  32. }
  33.  
  34. int sumDigits(int number) {
  35. int sum = 0;
  36. while ( number > 0 ) {
  37. sum += number % 10;
  38. number /= 10;
  39. }
  40. return sum;
  41. }
  42.  
  43. int removeFirstDigit(int number) {
  44. return number % static_cast<int>(std::pow(10, static_cast<size_t>(std::log10(number))));
  45. }
  46.  
  47. int firstDigit(int number) {
  48. while(number > 9)
  49. number /= 10;
  50. return number;
  51. }
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
1st digit of 1001 is equal to digit summation of 1
1st digit of 2002 is equal to digit summation of 2
1st digit of 3003 is equal to digit summation of 3
1st digit of 4004 is equal to digit summation of 4
1st digit of 5005 is equal to digit summation of 5
1st digit of 6006 is equal to digit summation of 6
1st digit of 7007 is equal to digit summation of 7
1st digit of 8008 is equal to digit summation of 8
1st digit of 9009 is equal to digit summation of 9
There are 9 combination!