반응형
https://www.acmicpc.net/problem/1016
제곱수의 개수를 찾아내어 전체 수에서 빼주면 된다.
단, 제곱수의 개수를 찾는것은 전체 범위의 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;
}
반응형