2016-07-05 2 views
0

좋아요. 그래서 정수의 이진 표현을 계산 한 다음 오른쪽에서 왼쪽 표기법으로 바꾸고이를 벡터에 배치하고 모듈화 된 지수법을 수행하는 과제가 있습니다. 이진 표현을 아래로 가지고 있지만 모듈화 된 지수 부분에 오면 잘못된 대답을 얻습니다. 그것은 코드에서 보지 못한 무언가일지도 모르지만 예제를 살펴본 결과 문제의 원인을 파악할 수 없습니다. 다음은 여기에 모듈러 지수를 나타내는 코드입니다.지수의 이진 표현을 사용하는 모듈러 지수화

int ModularExpo(int a, vector<int> K, int n) { 
    if (n == 1) { 
     return 0; 
    } 
    int b = 1; 
    int A = a; 
    if (K[0] == 1) { 
     b = a; 
    } 
    for (unsigned int i = 1; i < K.size() - 1; i++) { 
     A = A * A % n; 
     if (K[i] == 1) { 
      b = A * b % n; 
     } 
    } 
    return b; 
} 

그래서 기본적 I베이스 보내 (a), 역 벡터 (K)와 계수 (N)와 같은 바이너리 형태 지수. 2 개의 변수 b와 A를 초기화 한 다음 K가 짝수인지 홀수인지 확인하기 위해 첫 번째 인덱스를 확인한 다음 모든 것을 요약하는 내 루프로 이동하십시오. 아직도 그것을 알아낼 수 없습니다.

감사합니다. 감사합니다.

답변

0

좋아요. 실제로 알았습니다. 내 루프에

i < K.size() - 1 
내가 사용해야

중 하나

i < K.size() 

또는

i <= K.size() - 1 

를 사용했기 때문에 나는 벡터를 통해 모든 방법을 반복하지 않았다.

+0

컴파일러가'-1'과'<='를 인식하지 못하고 'i user4581301