- 나만 연습 안하는게 재동이한테 미안해서 한번 해봄..
- 소스는 리팩토링 없이, 끝난거 바로 올림. 좀 지저분 하지만 이런 대회를 목적으로 짜는 소스인만큼..
~cpp
#include <iostream>
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<<smithNumber<<"\n";
}
void input() {
cin>>testCase;
}
void main() {
input();
for(int i=0; i<testCase; i++)
{
cin>>number;
process();
output();
}
/* Test Code
number = 4937775;
int result=getPrimeFactorSum(number);
if(result==42)
cout<<"success\n";
else
cout<<"failure : "<<result<<"\n";
*/
/*
number = 4937775;
int result = getEachSum(number);
cout<<result;
*/
}