h0039. 平方数

平方数是一个整数,它的平方根也是一个整数。例如1、4、81是
一些平方数。给定两个数字a和b,请你在a和b之间(包括a和b)找出有多少平方数?

输入格式:

输入文件最多包含201行输入。每一行包含两个整数a和b (0<a≤
b≤100000)。输入以包含两个零的行结束。这一行不用处理。

输出格式:

每一行输入产生一行输出。这一行包含一个表示在a和b之间有多少个平方数(包括a和b)。

输入样例:

1 4
1 10
0 0

输出样例:

2
3
// 算法标签:前缀和
// 思路:将1 ~ 100000 平方数找出来求前缀和
#include<bits/stdc++.h>
using namespace std;
const int N = 100100;
int check(int x) //判断是否是平方数
{
    int r = pow(x,0.5);
    return r*r == x;
}
int a[N], l, r;
int main()
{
    for(int i=1; i<=100000; i++) //找出 1~100000的平方数的个数并在相应单元累加个数
        if(check( i ))
            a[i] ++;
    for(int i=1; i<=100000; i++) a[i]+=a[i-1]; //求前缀和
    while(cin>>l>>r && l!=0&&r!=0) //[l,r]的前缀和为 a[r] - a[l-1]
        cout<<a[r] - a[l-1] << endl;
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_51936803/article/details/124910610