[ BOJ / C++ ] 1009번 분산처리

황승환·2021년 7월 19일
0

C++

목록 보기
13/65

이번 문제는 문제 그대로 해결하면 수가 매우 커지므로 과정마다 %연산을 사용해 수를 줄여줘야한다.

  • a에 어떤 수가 와도 일의 자리만 고려하면 된다. 1~9 모든 수가 4개의 수로 이뤄진 패턴을 반복한다.
  • 4개의 수로 패턴이 이뤄지므로 b에 %4연산을 미리 해준다. 이때 b%4가 0이 되면 예외의 경우가 발생하므로 이때는 b에 4를 넣어준다.
  • a는 일의 자리만 고려하기 때문에 %10연산을 해준다. 이때 a%10가 0이 되면 예외의 경우가 발생하므로 이때는 a에 10을 넣어준다.
  • 본인은 a와 b의 예외경우를 처리하지 못해 처음에 오답처리 되었다.

Code

#include <iostream>
#include <math.h>
using namespace std;

int n;
int a, b;
int result=0;

void Input(){
    cin>>a>>b;
}

int Solution(){
    if(b%4==0)
        b=4;
    else{
        b%=4;
    }
    if(a%10==0){
        result=10;
        return result;
    }
    else{
        a%=10;
        result=pow(a,b);
        return result%10;
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    for(int i=0; i<n; i++){
        Input();
        cout<<Solution()<<endl;
    }
    return 0;
}

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글