U E D R , A S I H C RSS

Reverse And Add/문보창

소감

2005/02/19 Accepted 0:00.158 460
필요한 배열의 크기를 알고 있다면, 동적할당보다는 오히려 정적할당이 유리하다. 다음번엔 정적할당을 한 후 수행시간과 메모리를 비교해보자.

코드(C++)

~cpp 
// no10018 - Reverse and Add
#include <iostream> 
#include <cmath> 
using namespace std; 

int makePalim(unsigned int * pal, unsigned int originN, int count); 
void showPalim(const unsigned int * pal, const int * nadd, const int n); 

int main() 
{ 
	int n;                          // test의 수 
	 int i; 
	unsigned int num;               // test 
	cin >> n; 

	unsigned int * palim = new unsigned int[n];             // palindrome 
	int * nAdd = new int[n];                                // add의 수 
	 for (i=0; i<n; i++) 
	{ 
		cin >> num;         
		nAdd[i] = makePalim(palim, num, i); 
	} 
	showPalim(palim, nAdd, i); 
	delete [] nAdd; 
	delete [] palim; 
	return 0; 
} 

int makePalim(unsigned int * pal, unsigned int originN, int count) 
{ 
	int nadd = 0;                   // add의 수 
	 unsigned int reverseN;          // reverse한 수 
 	 int len, i;                     // 자리수 
	 unsigned int temp, t; 
	while(true) 
	{ 
		reverseN = 0; 
		len = 1; 
		temp = originN;  
		while (temp / 10 != 0) 
		{ 
			len++; 
			temp /= 10; 
		} 
		temp = originN; 
		for (i=0; i<len; i++) 
		{ 
			t = temp / pow(10, len-1-i); 
			reverseN += t * pow(10, i); 
			temp -= t * pow(10, len-1-i); 
		} 
		if (originN == reverseN) 
			break; 
		originN = originN + reverseN; 
		nadd++; 
	} 
	pal[count] = originN; 
	return nadd; 
} 

void showPalim(const unsigned int * pal, const int * nadd, const int n) 
{ 
	int i; 
	for (i=0; i<n; i++) 
		cout << nadd[i] << " " << pal[i] << endl; 
}

코드(Python)

~cpp 
def ReverseAndAdd(n, count):
    if int(n) == int(n[::-1]):
        print count, n
        return
    else:
        count += 1
        ReverseAndAdd(str(int(n) + int(n[::-1])), count)
    
if __name__== '__main__':
    for numCase in range(0, input(), 1):
        n = raw_input()
        ReverseAndAdd(n, 0)


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.1073 sec