前两天看了Polya定理,今天做了一道HDU的题,伤心了,超时。。。我的高精度超时。。。看了statistics,大部分是用JAVA过的。要好好学JAVA。。。
Problem Description
话说就是因为这个游戏,Lele已经变成一个名人,每当他一出现在公共场合,就有无数人找他签名,挑战。

为了防止引起社会的骚动,Lele决定还是乖乖呆在家里。

在 家很无聊,Lele可不想像其他人一样每天没事在家数钱玩,于是他就开始数棋盘。他想知道,一个有N×N个格子的正方形棋盘,每个格子可以用C种不同颜色 来染色,一共可以得到多少种不同的棋盘。如果一个棋盘,经过任意旋转,反射后变成另一个棋盘,这两个棋盘就是属于同一种棋盘。

比如当N=C=2的时候,有下面六种不同的棋盘



现在告诉你N和C,请你帮帮Lele算算,到底有多少种不同的棋盘

Input

本题目包含多组测试,请处理到文件结束。
每组测试数据包含两个正整数N和C(0<N,C,<31),分别表示棋盘的大小是N×N,用C种颜色来进行染色。

Output

对于每组测试,在一行里输出答案。

Sample Input

2 2
3 1

Sample Output

6
1
话说这题就是Polya定理,公式:S=(C^M1+C^M2+...+C^Mn)/G
G是阶数,Mi是各阶循环节的个数。
根据题意,有旋转和翻转两种情况,G=8,旋转4,翻转4。
对于旋转,以2*2为例很容易知道有旋转90度,180度,270度和360度,循环分别为(1,2,3,4);(1,3)(2,4);(1,4,3,2);(1)(2)(3)(4).
翻转则是枚举对称轴,正方形又分为沿对角线和沿边的中垂线两种。
附超时代码。。。。计算结果是正确的。。。。。:
TLE_CODE