#include <iostream> #include <time.h> #include <math.h> #include <set> #include <list> using namespace std; int handle (int tmp) { int num = tmp; int a[6] = {0}; if( tmp/100000 > 0 ) { a[0] = tmp/100000; tmp = tmp - a[0] * 100000; } else a[0] = 0; if ( tmp/10000 > 0 ) { a[1] = tmp/10000; tmp = tmp - a[1] * 10000; } else a[1] = 0; if ( tmp/1000 > 0 ) { a[2] = tmp/1000; tmp = tmp - a[2] * 1000; } else a[2] = 0; a[3] = tmp/100; tmp = tmp - a[3] * 100; a[4] = tmp/10; tmp = tmp - a[4] * 10; a[5] = tmp; int sum = 0; int index=0; if(a[0]==0) { index++; if(a[1]==0) index++; } for(int i=index; i!=6; i++) { sum += a[i]*a[i]*a[i]*a[i]*a[i]; //pow((double)a[i],5); 比用pow函数快了1秒 } if(num == sum) return num; return 0; } int main() { double start = clock(),end(0); int sum = 0; for(int n = 1000; n<300000; n++) { int result = handle(n); if( 0!=result) { sum += result; cout <<"number : " << result<<endl; } } cout <<"the sum : " << sum; end = clock(); double result = (end - start)/1000; cout.setf(ios::fixed); cout <<endl<< "3.00GHz's run time = " << result << "s."<<endl; return 0; }