比赛 20250520模拟测试 评测结果 AAWAWAWAWAWAWAWAWAAA
题目名称 幂次 最终得分 60
用户昵称 zjzhe 运行时间 2.029 s
代码语言 C++ 内存使用 14.09 MiB
提交时间 2025-05-20 15:26:36
显示代码纯文本
#include<bits/stdc++.h>
#include <cmath>
#define int long long 
using namespace std;
const int N=1e5+5;
int n,k,ans,fac[N];
__int128 ksm(int a,int b){
	__int128 res=1;
	for(;b;b>>=1,a=a*a)if(b&1)res=res*a;
	return res;
}
#undef int  
int main(){
#define int long long  
	freopen("power.in","r",stdin);
	freopen("power.out","w",stdout);
	cin>>n>>k;
    if(k==1)return cout<<n,0;
    if(k==2){
        set<int>s,s2;
	    for(int i=3;i<=100;i++){
            for(int j=1;j<=n;j++){
                __int128 t=ksm(j,i);
                if(t>n||t<=0)break;
                if((__int128)sqrtl(t)*(__int128)sqrtl(t)!=t)s.insert(t);
            }
        }
        cout<<s.size()+(int)sqrtl(n);
        return 0;
    }
    set<int>s;
	for(int i=k;i<=100;i++){
        for(int j=1;j<=n;j++){
            __int128 t=ksm(j,i);
            if(t>n||t<=0)break;
            s.insert(t);
        }
    }
    cout<<s.size();
	
	return 0;
}