#include <unordered_map>
#include <random>
#include <iostream>
template < typename Numeric, typename Divisor>
inline constexpr bool isDivisibleBy( Numeric numeric, Divisor divisor)
{
return ( ( numeric >= divisor) && ( ( numeric % divisor) == 0 ) ) ;
}
constexpr auto isEven = [ ] ( int test) - > bool { return isDivisibleBy< int , int > ( test, 2 ) ; } ;
int main( )
{
std:: mt19937 randomEngine{ std:: random_device { } ( ) } ;
std:: uniform_int_distribution < int > randomDistribution{ 0 , 100 } ;
std:: unordered_map < int , bool > hash{ } ;
for ( int i = 0 ; i < 10 ; i++ ) {
int randomNumber{ randomDistribution( randomEngine) } ;
hash.emplace ( randomNumber, isEven( randomNumber) ) ;
}
for ( auto & hash : hash) {
std:: cout << "key \" " << hash.first << "\" is " << ( hash.second ? "even" : "odd" ) << std:: endl ;
}
return 0 ;
}
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxyYW5kb20+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDx0eXBlbmFtZSBOdW1lcmljLCB0eXBlbmFtZSBEaXZpc29yPgppbmxpbmUgY29uc3RleHByIGJvb2wgaXNEaXZpc2libGVCeShOdW1lcmljIG51bWVyaWMsIERpdmlzb3IgZGl2aXNvcikKewogICAgcmV0dXJuICgobnVtZXJpYyA+PSBkaXZpc29yKSAmJiAoKG51bWVyaWMgJSBkaXZpc29yKSA9PSAwKSk7Cn0KCmNvbnN0ZXhwciBhdXRvIGlzRXZlbiA9IFtdKGludCB0ZXN0KSAtPiBib29sIHsgcmV0dXJuIGlzRGl2aXNpYmxlQnk8aW50LCBpbnQ+KHRlc3QsIDIpOyB9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6Om10MTk5MzcgcmFuZG9tRW5naW5le3N0ZDo6cmFuZG9tX2RldmljZXt9KCl9OwogICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50PiByYW5kb21EaXN0cmlidXRpb257MCwgMTAwfTsKICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxpbnQsIGJvb2w+IGhhc2h7fTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykgewogICAgICAgIGludCByYW5kb21OdW1iZXJ7cmFuZG9tRGlzdHJpYnV0aW9uKHJhbmRvbUVuZ2luZSl9OwogICAgICAgIGhhc2guZW1wbGFjZShyYW5kb21OdW1iZXIsIGlzRXZlbihyYW5kb21OdW1iZXIpKTsKICAgIH0KICAgIGZvciAoYXV0byAmaGFzaCA6IGhhc2gpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgImtleSBcIiIgPDwgaGFzaC5maXJzdCA8PCAiXCIgaXMgIiA8PCAoaGFzaC5zZWNvbmQgPyAiZXZlbiIgOiAib2RkIikgPDwgc3RkOjplbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0K