- 题意
设一个数既是平方数又是立方数,那称它为special数。在输出1-n中有多少special数。
- 思路
一开始没有转过弯来,长时间没写题,想的是两个set,一个加入平方数一个加入立方数,然后判断公共数。
后来想到special数是六次方数, 于是很简单了。
- 代码
#include "bits/stdc++.h"
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define mk make_pair
typedef long long ll;
const int maxn = 5e3 + 5;
int t;
ll n;
int main(){
freopen("1.txt","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>t;
while (t--) {
int ans = 0;
cin>>n;
for (ll i = 1; i <= n; i++) {
if (pow(i,6) <= n) {
ans ++;
}else break;
}
cout<<ans<<endl;
}
return 0;
}
- 遇到的问题
不用判断一个数开六次方满足条件与否,直接从1开始六次方,只要小于等于n即可。n虽然是1e9以上,但是六次方,很小。