110505 A multiplication game

来源:互联网 发布:网上礼佛软件 编辑:程序博客网 时间:2024/05/18 02:53

This solution gets "Wrong answer" result inhttp://www.programming-challenges.com/,

but it gets "Accepted" result inhttp://uva.onlinejudge.org/.

I don't know why so far.



#include <math.h>#include <iostream>using namespace std;#define MIN 2.0#define MAX 9.0enum Result_t{STAN,OLLIE};enum Target_t{NOT_LESS_THAN_AND_FIND_WINNER,LESS_THAN_AND_FIND_LOSER};static void OutputResult(Result_t result){switch(result){case STAN:cout << "Stan";break;default:cout << "Ollie";}cout << " wins." << endl;}static Result_t GetOppositeResult(Result_t result){switch(result){case STAN:return OLLIE;default:return STAN;}}static Result_t RunGame(unsigned long long n, Target_t target){if (NOT_LESS_THAN_AND_FIND_WINNER == target){// Find Winner.if (n <= 9)return STAN;if ((9 < n) && (n < (9 * 2)))return OLLIE;if (((2 * 2 * 9) <= n) && (n < (9 * 9 * 2)))return STAN;return GetOppositeResult(RunGame(ceil((double)n / MAX), LESS_THAN_AND_FIND_LOSER));}else // if (LESS_THAN_AND_FIND_LOSER == target){// Find Loserif (n <= 2)return STAN;if ((2 < n) && (n < (9 * 2)))return OLLIE;return GetOppositeResult(RunGame(ceil((double)n / MIN), NOT_LESS_THAN_AND_FIND_WINNER));}}static void Test(){unsigned long long n;while(cin >> n)OutputResult(RunGame(n, NOT_LESS_THAN_AND_FIND_WINNER));}int main(int argc, char* argv[]){Test();return 0;}


原创粉丝点击