lkbin95   2달 전

처음에는 아래코드처럼 주어지면 바로 계산해서 내놓는 코드를 짜서 실제로 잘 돌아가는것을 확인해보고 제출했는데 틀렸다고 나옵니다

#include<stdio.h>
int main()
{
int tcase, com1, com2,temp;
int low, up;
scanf("%d", &tcase);
 
for (com1 = 0; com1 < tcase ; com1++)
{
scanf("%d %d", &low, &up);
temp = low;
for (com2 = 1; com2<up; com2++)
{
 
temp = low*temp % 10;
 

 
}
 printf("%d\n", temp);
}
 

 
}


그런데 테스트 했을때 결과값은 잘나오는데 자꾸 틀렸다고 나오는겁니다.


그래서 아무래도 몃백번 계산을 반복하는 비효율적인 구조라 그런가 보다 해서 아예 지수 연산이니까 아예 형식화로 시켜서 switch case문으로 푸는 코드를 만들어봤습니다.

#include<stdio.h>

int main()
{
int cas, whi;
int low, up;
scanf("%d", &cas);

for (whi = 0; whi<cas; whi++)
{
scanf("%d %d", &low, &up);

switch (low)
{
case 1:
printf("1\n");
break;

case 2:
if (up % 4 == 1)
{
printf("2\n");
break;
}
else if (up % 4 == 2)
{
printf("4\n");
break;

}

else if (up % 4 == 3)
{
printf("8\n");
break;
}
else if (up % 4 == 0)
{
printf("6\n");
break;
}
case 3:
if (up % 4 == 1)
{
printf("3\n");
break;
}
else if (up % 4 == 2)
{
printf("9\n");
break;
}
else if (up % 4 == 3)
{
printf("7\n");
break;
}
else if (up % 4 == 0)
{
printf("1\n");
break;
}
case 4:
if (up % 2 == 1)
{
printf("4\n");
break;
}
else if (up % 2 == 0)
{
printf("6\n");
break;
}
case 5:
printf("5\n");
break;
case 6:
printf("6\n");
break;
case 7:
if (up % 4 == 1)
{
printf("7\n");
break;
}
else if (up % 4 == 2)
{
printf("9\n");
break;
}
else if (up % 4 == 3)
{
printf("3\n");
break;
}
else if (up % 4 == 0)
{
printf("1\n");
break;
}
case 8:
if (up % 4 == 1)
{
printf("8\n");
break;
}
else if (up % 4 == 2)
{
printf("4\n");
break;
}
else if (up % 4 == 3)
{
printf("2\n");
break;
}
else if (up % 4 == 0)
{
printf("6\n");
break;
}
case 9:
if (up % 2 == 1)
{
printf("9\n");
break;
}
else if (up % 2 == 0)
{
printf("3\n");

break;
}

}

}

}

이 코드 또한 예제에 따라서 실행은 잘되지만 또 틀렸다고 나옵니다.


생각나는 방법은 다해본것 같은데 제가 어디서 틀려서 이렇게 된걸까요.

sgchoi5   2달 전

printf("%d\n", temp); 가 문제인 듯 하네요. temp 가 0 이면 10 입니다.

lkbin95   2달 전

항상 사소한것을 헤메고 있는것 같습니다. 오늘도 깨닫고 갑니다.

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