BUPT复试专题—Special 数(2017)
题目描述
设一个正整数既是平方数乂是立方数时,称为Special数。
输入
输入包含多组测试数据,笫1行输入测试数据的组数,接下来在后续每行输入n(n<=1000000000)
输出
输出1到n中包含的所有Special数个数
样例输入
2
1
64
样例输出
1
2
提示
打表即可
来源
#include<stdio.h> #include<string> #include<string.h> #include<iostream> #include<map> using namespace std; struct num_ok { int number; int count; }nums[33]; int main() { //freopen("23.out","w",stdout); int t,num=1,m,num_ok_num=0; cin>>t; map<int,int> donser; for(int i=1;i*i*i<=1000000000;i++) { donser[i*i*i]=-10086; } for(int i=1;i*i<=1000000000;i++) { if(donser[i*i]==-10086) { nums[num_ok_num].count=num; nums[num_ok_num].number=i*i; num_ok_num++; num++; } } while(t--) { cin>>m; if(m<=1000000000&&m>887503681) { cout<<"31"<<endl; continue; } for(int i=num_ok_num-1;i>=0;i--) { if(nums[i].number<=m) { cout<<nums[i].count<<endl; break; } } } return 0; }