SRM448 div2 medium

nが奇数のとき、

1 2 3 4 5
2 4 1 3 5  (1+1)%5
4 3 2 1 5  (2+2)%5
3 1 4 2 5  (4+4)%5
1 2 3 4 5  (3+8)%5
<--5は動かない

nが偶数のとき

1 2 3 4
2 4 1 3
4 3 2 1
3 1 4 2
1 2 3 4  <--5のときとまったく同じ。
...
奇数と偶数で状況が変わることが分かる。2のべき乗とかは関係しない。
一応、m <= 1000000なので、2^mをやるわけにはいかない。なので、MODをもちいて計算する。
n = 9のとき
m
1 2 3 4  5  6
1 2 4 8 16 32  MOD 9

1 2 4 8  7  5
2 4 8 7  5  1 ..
class TheCardShufflingDivTwo {
public:
  int shuffle(int n, int m) {
		n = (int)n/2 * 2 + 1;
		int cur = 1;
		for(int i = 1; i <= m; i++) {
			cur = (cur*2)%n;
		}
		return cur-1 + 1;
	}

};