#include<stdio.h>
#include<math.h>
int main() {
    long long int l, r;
    int n;
    int cnt = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        scanf("%lld%lld", &l, &r);
        cnt =(int) sqrt(r) - (int) sqrt(l);
        if(((int) sqrt(l))* ((int)sqrt(l))==l){
            cnt++;
        }
        printf("%d\n", cnt);
        cnt = 0;
    }
    return 0;
}
开始做这题·感觉有点坑,0这个数没考虑到,感觉好蠢,这题其实可以运用前缀和思想来写,可以先找到r以前的所有平方数,再找出l前所有的平方数,(这个用相减法时,如果l本身是一个平方数则加上这个平方数),
在判断这个数是否是平方数是可以用平方根来搞搞,被忘了加个int强制转换。