-
Notifications
You must be signed in to change notification settings - Fork 0
/
KYSXD_3323.cpp
37 lines (34 loc) · 945 Bytes
/
KYSXD_3323.cpp
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
32
33
34
35
36
37
//"""
//#KYSXD - Problema 3323
//Even Number of Divisors
//"""
//Status:
//"""
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
long long int cuentaCuadrados(long long int primero, long long int ultimo) {
long double raiz_primero = sqrt(primero);
long double raiz_ultimo = sqrt(ultimo);
if (int(raiz_primero) == int(raiz_ultimo)){
return (int(raiz_primero) == raiz_primero) ? 1 : 0;
}
else {
long long int cant_cuadrados = int(raiz_ultimo) - int(raiz_primero);
cant_cuadrados += (int(raiz_primero) == raiz_primero) ? 1 : 0;
return cant_cuadrados;
}
}
int main()
{
long long int inicio, fin, resultado;
while (scanf("%lld %lld", &inicio, &fin)) {
if (inicio == 0 && fin == 0)
break;
else
resultado = ((fin - inicio) + 1) - cuentaCuadrados(inicio, fin);
printf("%lld\n",resultado);
}
return 0;
}