View Code of Problem 31

int min(int a , int b , int c)
{
	int minNum = a < b ? a : b;
	minNum = minNum < c ? minNum : c;
	return minNum;
}
 
int findUglyNumber(int k)
{
	int *pArray = new int[k + 1];
	pArray[0] = 1;
	int* p3 , *p5 , *p7;
	p3 = p5 = p7 = pArray;
	int count = 0;
	int minNum;
	while(count < k)
	{
		count++;
		minNum = min( *p3 * 3 , *p5 * 5 , *p7 * 7);
		pArray[count] = minNum;
		//注意等号不能取,while中循环条件如果改成 *p3 * 3 < minNum 是错误的,这样会陷入死循环,使得minNum候选的几个候选值不再变化 
		while( *p3 * 3 <= minNum )
		{
			p3++;
		}
		while( *p5 * 5 <= minNum)
		{
			p5++;
		}
		while( *p7 * 7 <= minNum)
		{
			p7++;
		}
	}
	int result = pArray[k];
	delete[] pArray;
	return result;
}
 
void process()
{
	int k;
	while(cin >> k)
	{
		int result = findUglyNumber(k);
		cout << result << endl;
	}
}
 
int main(int argc , char* argv[])
{
	process();
	getchar();
	return 0;
}


/*
Main.c: In function 'findUglyNumber':
Main.c:10:16: error: 'new' undeclared (first use in this function)
  int *pArray = new int[k + 1];
                ^
Main.c:10:16: note: each undeclared identifier is reported only once for each function it appears in
Main.c:10:20: error: expected ',' or ';' before 'int'
  int *pArray = new int[k + 1];
                    ^
Main.c:36:2: error: 'delete' undeclared (first use in this function)
  delete[] pArray;
  ^
Main.c:36:9: error: expected expression before ']' token
  delete[] pArray;
         ^
Main.c: In function 'process':
Main.c:43:8: error: 'cin' undeclared (first use in this function)
  while(cin >> k)
        ^
Main.c:46:3: error: 'cout' undeclared (first use in this function)
   cout << result << endl;
   ^
Main.c:46:21: error: 'endl' undeclared (first use in this function)
   cout << result << endl;
                     ^
Main.c: In function 'main':
Main.c:53:2: warning: implicit declaration of function 'getchar' [-Wimplicit-function-declaration]
  getchar();
  ^
*/

Double click to view unformatted code.


Back to problem 31