= SmithNumbers/남상협 = * 나만 연습 안하는게 재동이한테 미안해서 한번 해봄.. * 소스는 리팩토링 없이, 끝난거 바로 올림. 좀 지저분 하지만 이런 대회를 목적으로 짜는 소스인만큼.. {{{~cpp #include using namespace std; int testCase; int number; int smithNumber = 0; int getPrimeFactorSum(int num) { int sum=0; for(int i=2; i <=num ; i++) { if(num%i==0) { if(i<10) sum+=i; else { int div = i; int ten = 10; for(;div>0;) { sum+=div%ten; if(div%ten==0) sum+=div; div = int(div/ten); } } num = num/i; while(num%i==0) { sum+=i; num = num/i; } } } return sum; } int getEachSum(int num) { int sum=0; int ten =10; for(;num>0;) { sum+=num%ten; if(num%ten==0) sum+=num; num = int(num/ten); } return sum; } void process() { for(int i = number; i<1000000000; i++) { if(getEachSum(i)==getPrimeFactorSum(i)) { smithNumber = i; break; } } } void output() { cout<>testCase; } void main() { input(); for(int i=0; i>number; process(); output(); } /* Test Code number = 4937775; int result=getPrimeFactorSum(number); if(result==42) cout<<"success\n"; else cout<<"failure : "<