0w1

Yuki 403 2^2^2 ( Fast Multiplication, Math, Little Fermat's Theorem )

No.403 2^2^2 - yukicoder

自分が 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;
}