coding_test/BAEKJOON

백준 2028번 C언어 풀이

CodeJin 2022. 1. 10. 02:00

https://www.acmicpc.net/problem/2028

 

2028번: 자기복제수

어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가

www.acmicpc.net

자가복제수를 찾는 문제. 자가복제수란, 자연수 n을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 n이 나타나는 수를 의미한다. n과 n^2를 10으로 나눈 나머지를 계속 비교해가며 풀면 된다.

 

#include <stdio.h>

int main () {
    int t, n, square;
    int flag;
    scanf("%d", &t);
    while (t--) {
        flag = 1;
        scanf("%d", &n);
        square = n*n;
        while (n) {
            if (n % 10 != square % 10) flag = 0;
            n/=10; square /= 10;
        }
        printf("%s\n", flag ? "YES" : "NO");
    }
    return 0;
}