平方数是一个整数,它的平方根也是一个整数。例如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;
}