13

int main() 
 {
 int n;
 scanf("%d", &n);
 while (n--) 
 {
     int l, r;
     scanf("%d %d", &l, &r); 
     int y_max = (int)sqrt(r);
     //算l的平方根,然后向上取整并强制转换为整数, y² >= l
     int y_min = (int)ceil(sqrt(l));
     
     int count;
     if (y_max < y_min) 
         count = 0;  
     else 
         count = y_max - y_min + 1;  
     
     
     printf("%d\n", count);
   }

◮:先找到满足 y²<=r  的最大整数yᵐᵃˣ,再找到满足的最小整y²>=l数yᵐⁱⁿ,若yᵐᵃˣ>=yᵐⁱⁿ则区间内完全平方数的个数为yᵐᵃˣ-yᵐⁱⁿ+1 否则个数为 0

◮:

posted @ 2025-08-21 15:09  ervgiu28hg34y827  阅读(7)  评论(0)    收藏  举报