# Problem E: A multiplication game

Problem E: A multiplication game

## Problem E: A multiplication game

Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 to 9. Stan always starts with p = 1, does his multiplication, then Ollie multiplies the number, then Stan and so on. Before a game starts, they draw an integer 1 < n < 4294967295 and the winner is who first reaches p >= n. Each line of input contains one integer number n. For each line of input output one line either

```Stan wins.
```

or

```Ollie wins.
```

assuming that both of them play perfectly.

``````162
17
34012226
``````

``````Stan wins.
Ollie wins.
Stan wins.
``````

``````#include <stdio.h>
#include <assert.h>

int main () {
unsigned int W, l ,h, n;
while (scanf("%u",&n)==1) {
assert(1 < n && n < 4294967295U);
W = 1;
l = n/9; if (l*9<n) l++; h = n-1;
while (1) {
if (l <= 1 && 1 <= h) {
printf(W?"Stan wins.\n":"Ollie wins.\n");
break;
}
if (W) {
if (l/2*2 < l) l = l/2+1; else l/=2;
h/=9;
W=0;
} else {
if (l/9*9 < l) l = l/9+1; else l/=9;
h/=2;
W=1;
}
}

}
return 0;
}``````

``````#include <stdio.h>
#include <assert.h>

int main () {
unsigned int W, l ,h, n;
while (scanf("%u",&n)==1) {
assert(1 < n && n < 4294967295U);
W = 1;
l = n/9; if (l*9<n) l++; h = n-1;
while (1) {
if (l <= 1 && 1 <= h) {
printf(W?"Stan wins.\n":"Ollie wins.\n");
break;
}
if (W) {
if (l/2*2 < l) l = l/2+1; else l/=2;
h/=9;
W=0;
} else {
if (l/9*9 < l) l = l/9+1; else l/=9;
h/=2;
W=1;
}
}

}
return 0;
}``````