문제 URL:
1009번: 분산처리
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000)
www.acmicpc.net
다음 문제는 10대의 컴퓨터에서 총데이터의 개수는 항상 a^b개의 형태로 주어질 때
마지막 데이터가 처리될 컴퓨터의 번호를 구하는 프로그램이다.
이 문제는 단순히 a를 b번 곱하는 반복문을 반복한 뒤 그 값을 10으로 나눈 나머지를 구하면 되지만
그렇게 한다면 실행 시간이 매우 커지게 되어 시간제한을 초과한다.
따라서 이 문제를 a의 끝자리만 b번 곱해주는 방식으로 풀었는데 코드는 아래와 같다.
주의할 점! 10으로 나눈 나머지는 0이 되므로 나머지가 0일 때 컴퓨터 번호가 10 임을 명시하는 코드가 있어야 한다.
#include<iostream>
using namespace std;
int main()
{
int t, a, b;
cin >> t;
for(int k=0; k<t; k++)
{
cin >> a >> b;
int num = a%10;
for(int i=0; i<b-1; i++)
{
num = a*num;
num = num%10;
}
if(num==0)
cout << 10 << "\n";
else
cout << num << "\n";
}
}