ACM준비/acmicpc

제곱ㄴㄴ수

조규현15 2015. 11. 4. 11:23
반응형

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

 

1016번: 제곱 ㄴㄴ 수

어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수

www.acmicpc.net

 

제곱수의 개수를 찾아내어 전체 수에서 빼주면 된다.

단, 제곱수의 개수를 찾는것은 전체 범위의 min, max의 제곱근의 범위로 찾을 수 있다.

문제는 왜 틀렸는지 모르겠다ㅜ 

 

#define INT64 long long
int main()
{
	INT64 min, max;
	scanf("%llu %llu", &min, &max);

	INT64 A = (sqrtl(max) >= (INT64)sqrtl(max)) ? (INT64)sqrtl(max) + 1 : (INT64)sqrtl(max);
	INT64 B = (sqrtl(min) > (INT64)sqrtl(min)) ? (INT64)sqrtl(min) + 1 : (INT64)sqrtl(min);
	INT64 result = A - B;
		
	result = (max - min + 1) - result;
	printf("%llu\n", result);
	return 0;
}

 

반응형

'ACM준비 > acmicpc' 카테고리의 다른 글

문자열 집합 판별  (0) 2015.12.05
수열 정렬  (0) 2015.11.03
Contact  (0) 2015.11.03
유기농 배추  (0) 2015.11.02
포켓몬 마스터  (0) 2015.11.02