whdtjq0101   10달 전

#include <stdio.h>

int T = 0;
int a = 0;
int b = 0;

int Math(int Number) // Number는 나눈 나머지가 1이 될 때의 수
{
int Count = b % Number; // b를 Number로 나눈 나머지를 Count 에 대입
int Data = 1;
int i = 0;

for (i = 0; i < Count; ++i)
{
Data = Data * a;
if (Data > 10)
Data = Data % 10;
}

return Data;
}

int LastData()
{
int lastData = a;
int i = 0;
int Number = 1;
int N = 0;

for (i = 1; i < b; ++i)
{
lastData = lastData * a;
if (lastData > 10)
{
lastData = lastData % 10;
if (lastData == 1)
{
N = 1;
Number = i + 1;
break;
}
}
}

if (N == 1) // 나눠서 1이 나왔을 경우에는 Math 함수 수행
lastData = Math(Number);

return lastData; // 안나왔을 경우에는 바로 lastData 값 return
}

void aCheck()
{
while (a >= 100 || a < 1)
scanf("%d", &a);
}

void bCheck()
{
while (b >= 1000000 || b < 1)
scanf("%d", &b);
}

int main(void)
{
int Index = 0;

scanf("%d", &T);

while (Index < T)
{
scanf("%d %d", &a, &b);
aCheck();
bCheck();

printf("%d\n", LastData());

++Index;
}

return 0;
}


LastData 함수에서 a^b 에서 나눈 나머지가 1 이 될 때의 b 값을 Number에 대입하여 Math 함수에서 b를 Number로 나눈 나머지를 구한 후 그 횟수 만큼 곱하고 10으로 나눈 나머지를 구하는 로직인데 어느 부분에서 잘못됬는지 잘 이해가 가지않는데 좀 도와주세요...ㅠ

댓글을 작성하려면 로그인해야 합니다.