K - 魔法数
经过思考可以发现,魔法数的五个约数分别是
1
,
x
2
,
x
3
,
x
3
,
x
4
,
1,x^{2},x^{3} ,x^{3} ,x^{4} ,
1,x2,x3,x3,x4, (
x
x
x 为质数)。
因此可以预处理出
1
1
1 至
1000
1000
1000 以内的质数,实际上只有
168
168
168 个。
对于每次询问都暴力地枚举一遍质数看看哪些符合条件即可(也可以二分)。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int is_primes(int x)
{
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
signed main()
{
vector<LL> num;
for(int i=2;i<=1000;i++)
if(is_primes(i))
num.push_back(1ll*i*i*i*i);
int t;cin>>t;
while(t--)
{
LL l,r;cin>>l>>r;
LL res=0;
for(int i=0;i<num.size();i++)
if(num[i]>=l&&num[i]<=r)
res++;
cout<<res<<endl;
}
return 0;
}