求助,最后一个点WA
  • 板块学术版
  • 楼主CHEN08_94
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/25 11:21
  • 上次更新2024/10/25 14:01:40
查看原帖
求助,最后一个点WA
633110
CHEN08_94楼主2024/10/25 11:21
#include<bits/stdc++.h>
using namespace std;
unordered_map<long long, bool> s;
long long n=0;
long long qpow(long long x, long long y)
{
    long long res;
    for (res = 1; y > 0; y--)
        if ((res *= x) > n)
            return n + 1;
    return res;
}
int main()
{
	long long k;
	long long ans=0;
	scanf("%lld %lld",&n,&k);
	if(k==1)
	{
		printf("%lld\n",n);
		return 0;
	}
	if(k==2) 
	{
		ans=(long long)sqrtl(n);
	}
	for(long long i=max(k,3ll);i<=60ll;i++)
	{
		for(long long j=1,res;(res=qpow(j,i))<=n;j++)
		{
			if(k!=2||((long long)sqrt(res)*(long long)sqrt(res)!=res))
			{
				s[res]=1;
			}
		}
	}
	ans+=s.size();
	printf("%lld\n",ans);
	return 0;
}
2024/10/25 11:21
加载中...