답안 #19501

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
19501 2016-02-24T14:21:18 Z sung927 Α (kriii4_P1) C++14
0 / 100
0 ms 1280 KB
#include<stdio.h>
#include<math.h>

 unsigned long long A;
 unsigned long long perA;
 unsigned long long X;
 unsigned long long arr[65];
 bool Tr[65];
int max;
unsigned long long ans = 1;

void finish(int y, int dex)
{

    if((y%2)) Tr[dex] = 1;

    if(y/2>=1) finish(y/2, dex+1);
}

void solve(int k)
{
    arr[k] = (int)((unsigned long long)(arr[k-1]*arr[k-1]) % 1000000007);
    if(pow(2,k)<=X) solve(k+1);

    else {max = k; finish(X, 1);}

}

int main ()
{
    scanf("%lld", &A);
    scanf("%lld", &X);
    perA = A % 1000000007;
    arr[1] = perA;
    solve(2);

    for(int i=1; i<=max+1; i++) {if(Tr[i]) ans*= arr[i]; if(ans>1000000007) ans%=1000000007;}
    printf("%lld", ans);

    }
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 1280 KB Output isn't correct
2 Halted 0 ms 0 KB -