zju 1596, 哪儿错了?
Wrong Answer,请高手指点。
#include <string.h>
#include <list>
#include <iostream>
using namespace std;
inline unsigned long long fromstring (char* s)
{
long long result = 0;
for (unsigned i = 0; i < strlen (s); ++i)
{
result *= 10;
result += s [i] - '0';
}
return result;
}
inline void insert (list <unsigned long long>& maybe, unsigned long long v)
{
for (list <unsigned long long> ::iterator it = maybe .begin (); it != maybe .end (); ++it)
{
if ((*it) > v)
{
maybe .insert (it, v);
return;
}
else if ((*it) == v)
{
return;
}
}
maybe .push_back (v);
}
inline unsigned long long calc (unsigned long long a, unsigned long long b, unsigned long long c, unsigned long long n)
{
list <unsigned long long> maybe;
maybe .push_back (1);
for (unsigned long long i = 0; i < n; ++i)
{
unsigned long head = * maybe .begin ();
insert (maybe, head * a);
insert (maybe, head * b);
insert (maybe, head * c);
maybe .pop_front ();
}
return * maybe .begin ();
}
int main (int argc, char* argv [])
{
char sa [100], sb [100], sc [100], sn [100];
while (cin >> sa >> sb >> sc >> sn)
{
unsigned long long a = fromstring (sa);
unsigned long long b = fromstring (sb);
unsigned long long c = fromstring (sc);
unsigned long long n = fromstring (sn);
cout << calc (a, b, c, n) << endl;
}
return 0;
}