간만에 solve했네요.
참조테이블을 이용하면 효율적입니다.^^
http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110505&format=html
문제요약
1부터 시작하여 2~9까지 임의의 수를 곱하는 것을 반복한다. 두명(stan, ollie)이 진행하는데 첫 순서는 stan이다. 특정 입력값보다 큰거나 같은 값을 부르는 사람이 승리한다.
#include <iostream>
#include <math.h>
typedef unsigned int UInt32;
typedef unsigned long long UInt64;
static const char* WINNER[2] = {"Stan wins.", "Ollie wins."};
int main()
{
UInt32 input = 0;
while(std::cin >> input)
{
for(int i=1; i<=10; ++i)
{
UInt64 stan = 9*pow((long double)18, i-1);
UInt64 ollie = pow((long double)18, i);
if(input <= stan)
{
std::cout << WINNER[0] << std::endl;
break;
}
if(input <= ollie)
{
std::cout << WINNER[1] << std::endl;
break;
}
}
}
return 0;
}
No comments:
Post a Comment