// File Name: poj2409.cpp // Author: bo_jwolf // Created Time: 2013年10月08日 星期二 14:31:08 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define INT long long int using namespace std; INT gcd( INT a, INT b){ return b == 0 a: gcd( b, a % b ); } INT c, s; INT polya(){ INT ans = 0; for( INT i = 0; i < s; ++i ){ ans += (INT)pow( 1.0 * c, gcd( s, i ) ); } if( s % 2 ){ ans += s * ( INT )pow( 1.0 * c, ( s / 2 + 1 ) ); } else{ ans += s / 2 * ( INT )pow( 1.0 * c, s / 2 ); ans += s / 2 * ( INT )pow( 1.0 * c, s / 2 + 1 ); } return ans / 2 / s; } int main(){ INT ans; while( scanf( "%lld%lld", &c, &s ) != EOF ){ if( !c && !s ) break; ans = polya(); printf( "%lld\n", ans ); } return 0; }