#include <iostream>
#include <map>
#include <cmath>
int firstDigit( int number) ;
int sumDigits( int number) ;
int removeFirstDigit( int number) ;
int main( ) {
std:: map < int , int > pairs;
for ( int i = 1000 ; i <= 9999 ; ++ i) {
int stripped = firstDigit( i) ;
int threeDigit = removeFirstDigit( i) ;
int firstDigit3 = firstDigit( threeDigit) ;
if ( threeDigit == sumDigits( stripped) && firstDigit3 > 0 ) {
pairs[ i] = threeDigit;
}
}
for ( auto i : pairs) {
int key = i.first ;
int value = i.second ;
std:: cout << "1st digit of " << key << " is equal to digit summation of " << value << std:: endl ;
}
std:: cout << "There are " << pairs.size ( ) << " combination!" << std:: endl ;
return 0 ;
}
int sumDigits( int number) {
int sum = 0 ;
while ( number > 0 ) {
sum + = number % 10 ;
number / = 10 ;
}
return sum;
}
int removeFirstDigit( int number) {
return number % static_cast < int > ( std:: pow ( 10 , static_cast < size_t > ( std:: log10 ( number) ) ) ) ;
}
int firstDigit( int number) {
while ( number > 9 )
number / = 10 ;
return number;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y21hdGg+CgoKaW50IGZpcnN0RGlnaXQoaW50IG51bWJlcik7CmludCBzdW1EaWdpdHMoaW50IG51bWJlcik7CmludCByZW1vdmVGaXJzdERpZ2l0KGludCBudW1iZXIpOwoKaW50IG1haW4oKSB7CgkKCXN0ZDo6bWFwPGludCwgaW50PiBwYWlyczsKICAgIAogICAgZm9yKGludCBpID0gMTAwMDsgaSA8PSA5OTk5OyArK2kpIHsKICAgICAgICBpbnQgc3RyaXBwZWQgPSBmaXJzdERpZ2l0KGkpOwogICAgICAgIGludCB0aHJlZURpZ2l0ID0gcmVtb3ZlRmlyc3REaWdpdChpKTsKICAgICAgICBpbnQgZmlyc3REaWdpdDMgPSBmaXJzdERpZ2l0KHRocmVlRGlnaXQpOwogICAgICAgIGlmICggdGhyZWVEaWdpdCA9PSBzdW1EaWdpdHMoc3RyaXBwZWQpICYmIGZpcnN0RGlnaXQzID4gMCApIHsKICAgICAgICAgIHBhaXJzW2ldID0gdGhyZWVEaWdpdDsKICAgICAgICB9CiAgICB9CgogICAgZm9yKGF1dG8gaSA6IHBhaXJzKSB7CiAgICAgICAgaW50IGtleSA9IGkuZmlyc3Q7CiAgICAgICAgaW50IHZhbHVlID0gaS5zZWNvbmQ7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIxc3QgZGlnaXQgb2YgIiA8PCBrZXkgPDwgIiBpcyBlcXVhbCB0byBkaWdpdCBzdW1tYXRpb24gb2YgIiA8PCB2YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICB9CiAgICAKICAgIHN0ZDo6Y291dCA8PCAiVGhlcmUgYXJlICIgPDwgcGFpcnMuc2l6ZSgpIDw8ICIgY29tYmluYXRpb24hIiA8PCBzdGQ6OmVuZGw7CiAgICAKICAgIHJldHVybiAwOwp9CgppbnQgc3VtRGlnaXRzKGludCBudW1iZXIpIHsKICAgIGludCBzdW0gPSAwOwogICAgd2hpbGUgKCBudW1iZXIgPiAwICkgewogICAgICAgIHN1bSArPSBudW1iZXIgJSAxMDsKICAgICAgICBudW1iZXIgLz0gMTA7CiAgICB9CiAgICByZXR1cm4gc3VtOwp9CgppbnQgcmVtb3ZlRmlyc3REaWdpdChpbnQgbnVtYmVyKSB7CiAgICByZXR1cm4gbnVtYmVyICUgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OnBvdygxMCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6OmxvZzEwKG51bWJlcikpKSk7Cn0KCmludCBmaXJzdERpZ2l0KGludCBudW1iZXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgCgl3aGlsZShudW1iZXIgPiA5KQogICAgCW51bWJlciAvPSAxMDsKICAgIHJldHVybiBudW1iZXI7Cn0=