출처 : 반크_세계유산 경복궁
문제]
어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다.
예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가 나타나므로 5는 자기복제수이다. 또 다른 예로, 76의 제곱은 5776이고 5776의 맨 뒷자리에 76이 나타나므로 76 또한 자기복제수이다.
자연수 N이 주어졌을 때, 그 수가 자기복제수인지 아닌지를 알아내는 프로그램을 작성하시오.
입력
입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 자연수 N (1 ≤ N ≤ 1000)이 주어진다.
출력
각 테스트 케이스에 대해, 주어진 자연수가 자기복제수이면 YES를 아니면 NO를 출력한다.
예제 입력 1
4
1
6
76
89
예제 출력 1
YES
YES
YES
NO
출처 : 백준_2028번
참고풀이]
#include <stdio.h>
int main()
{
int T;//test 수를 입력받는다.
int N;
int i;
scanf("%d",&T);
if(T>=1 && T<=20)
{
//테스트 수만큼 반복한다.
for(i=1; i<=T; i++)
{
//임의의 자연수를 입력받는다.
scanf("%d",&N);
if(N>=1 && N<=1000)
{
//N을 제곱하고 그 제곱의 맨 뒷자리 수가
//원래의 수 N이 되면 N을 자기복제수라고 한다.
if(N<10)
printf("%s\n",((N*N)%10==N) ? "YES" : "NO");
else if(N<100)
printf("%s\n",((N*N)%100==N) ? "YES" : "NO");
else if(N<1000)
printf("%s\n",((N*N)%1000==N) ? "YES" : "NO");
else
printf("%s\n",((N*N)%1000==N) ? "YES" : "NO");
}
}
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 봄
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 182제] NLCS Jeju GEC-Cup A번 특별한 학교 이름 (0) | 2024.11.14 |
---|---|
C언어 181제] 2022 동래고등학교 정보과학 문제해결 대회 A번 성택이의 은밀한 비밀번호 (1) | 2024.11.13 |
C언어 180제] 단어 길이 재기 (0) | 2024.11.12 |
C언어 179제] 2004년 한국정보올림피아드 지역본선 초등부 2번 줄 세우기 (0) | 2024.11.12 |
C언어 178제] 버블정렬 (1) | 2024.10.31 |
댓글