Yuki 403 2^2^2 ( Fast Multiplication, Math, Little Fermat's Theorem )
自分が pow() の中に普段書いてる res = 1 は間違ってるみたですね。0^n = 0, for all n > 0 ですから。
const int MOD7 = ( int ) 1e9 + 7; ll A, B, C; void init(){ scanf( "%lld^%lld^%lld", &A, &B, &C ); } ll ll_pow( ll v, ll p, ll mod ){ v %= mod; ll res = v % mod != 0; while( p ){ if( p & 1LL ) ( res *= v ) %= mod; p >>= 1; ( v *= v ) %= mod; } return res; } void solve(){ cout << ll_pow( ll_pow( A, B, MOD7 ), C, MOD7 ) << " " << ll_pow( A, ll_pow( B, C, MOD7 - 1 ), MOD7 ) << endl; }