北邮机试——special数

  • 题意
    设一个数既是平方数又是立方数,那称它为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以上,但是六次方,很小。

猜你喜欢

转载自blog.csdn.net/qq_39763472/article/details/105580831