Algorithm/baekjoon
2028 자기복제수
쿠뱃봉
2022. 2. 12. 10:45
2028번: 자기복제수
어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가
www.acmicpc.net
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main() {
cin.tie(NULL);
cin.sync_with_stdio(false);
int num;
int fornum = 0;
cin >> fornum;
for (int z = 0; z < fornum; z++) {
cin >> num;
int cnt = 0;
int numcopy1 = num;
int numcopy2 = num;
while (numcopy1 != 0) {
numcopy1 /= 10;
cnt++;
}
int* narr = new int[cnt];
for (int i = cnt - 1; i >= 0; i--) {
narr[i] = num % 10;
num /= 10;
}
int mnum = numcopy2 * numcopy2;
int mcnt = 0;
int mnumcopy1 = mnum;
while (mnumcopy1 != 0) {
mnumcopy1 /= 10;
mcnt++;
}
int* marr = new int[mcnt];
for (int i = mcnt - 1; i >= 0; i--) {
marr[i] = mnum % 10;
mnum /= 10;
}
int flag = 0;
for (int i = 0; i < cnt; i++) {
if (marr[mcnt - cnt + i] != narr[i]) {
flag = 1;
};
}
if (flag == 0) {
cout << "YES\n";
}
else {
cout << "NO\n";
}
}
}