A.
找1-1000000000内所有可开二次根且可开三次根的数。
别直接for循环,肯定超时。
先把所有可能的答案都找出来,再做二次判断。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
vector<int> a;
for(int i = 1;i <= 1000;i ++)
a.push_back(i*i*i);
sort(a.begin(),a.end());
while(t--){
int n;
scanf("%d",&n);
int count = 0;
for(int i = 0;i < a.size();i ++){
if(a[i] > n) break;
if(sqrt(a[i]) == (int)sqrt(a[i])) count ++;
}
printf("%d\n",count);
}
return 0;
}
B.
输入
9 8
1 4 8
5 7 9
2 2 5 3
5 5 9
3 5 8 3
4 3 8
5 7 9