U E D R , A S I H C RSS

Smith Numbers/남상협

SmithNumbers/남상협

  • 나만 연습 안하는게 재동이한테 미안해서 한번 해봄..
  • 소스는 리팩토링 없이, 끝난거 바로 올림. 좀 지저분 하지만 이런 대회를 목적으로 짜는 소스인만큼..

~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;
	*/
}


DeleteMe) 왜지 C코드 첨보는거 같은 기분이다;; 방학때 씨만해야겠군;; - eternalbleu
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0067 sec