Jump to content

Narcissistic decimal number: Difference between revisions

no edit summary
No edit summary
Line 194:
</pre>
 
=={{header|C++}}==
<lang cpp>
#include <iostream>
#include <vector>
using namespace std;
typedef unsigned int uint;
 
class NarcissisticDecs
{
public:
void makeList( int mx )
{
uint st = 0, tl; int pwr = 0, len;
while( narc.size() < mx )
{
len = getDigs( st );
if( pwr != len )
{
pwr = len;
fillPower( pwr );
}
tl = 0;
for( int i = 1; i < 10; i++ )
tl += static_cast<uint>( powr[i] * digs[i] );
 
if( tl == st ) narc.push_back( st );
st++;
}
}
 
void display()
{
for( vector<uint>::iterator i = narc.begin(); i != narc.end(); i++ )
cout << *i << " ";
cout << "\n\n";
}
 
private:
int getDigs( uint st )
{
memset( digs, 0, 10 * sizeof( int ) );
int r = 0;
while( st )
{
digs[st % 10]++;
st /= 10;
r++;
}
return r;
}
 
void fillPower( int z )
{
for( int i = 1; i < 10; i++ )
powr[i] = pow( static_cast<float>( i ), z );
}
 
vector<uint> narc;
uint powr[10];
int digs[10];
};
 
int main( int argc, char* argv[] )
{
NarcissisticDecs n;
n.makeList( 25 );
n.display();
return system( "pause" );
}
</lang>
{{out}}
<pre>
0 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315
</pre>
=={{header|D}}==
===Simple Version===
Cookies help us deliver our services. By using our services, you agree to our use of cookies.