티스토리 뷰

#include <stdio.h>
#include <math.h> //sqrt을 사용하기 위함

int main(void) {
	int t;
	scanf("%d", &t);
	
	while(t--) {
		long long a, b;
		scanf("%lld", &a);
		b = sqrt(a);
		printf("%d ", a==b*b); //제곱수이면 1, 아니면 0을 출력
	}
}

풀이 : 약수의 개수가 홀수인 것은 오직 제곱수입니다.

제곱수인지를 확인하는 방법은, 정수형 타입에서 수에 제곱근을 구한뒤, 그 제곱근 한 것의 제곱이 기존의 수와 같은지를 확인하면 된다. (정수형에선 소수점 이하는 버림되기에, 제곱수가 아니라면, 제곱근의 제곱을 한 것은 기존수와 같지 않다)

 

ex) 8의 제곱근 2*2^(1/2) 이지만 정수형이므로, 소수점 버림을 하면 2가되며 2*2 != 8 이므로, 8은 제곱수가 아니다.

 

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

 

11815번: 짝수? 홀수?

B를 A로 나누었을 때 나머지가 0 이라면 A는 B의 약수라고 할 수 있다. (A > 0, B > 0) 예를 들면 15 의 약수는 1, 3, 5, 15 이다. 주어진 수가 가지는 약수 개수가 홀수인지 짝수인지 판별해보자.

www.acmicpc.net

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함