lgP9118 WA80求调

luogu求调贴
题目
image

#include <bits/stdc++.h>
using namespace std;
#define int long long
long long n,k,ans;
map<int,bool> mp;
signed main() {
	cin >> n >> k;
	if(k==1){
		cout << n;
		exit(0);
	}
	for(int i = max(k,3ll);i <= 63;i ++){
		for(int j = 1;pow(j,i) <= n;j ++){
			int x=pow(j,i);
			if(!mp[x] && ((int)sqrt(x)*(int)sqrt(x)!=x || k!=2)){
				mp[x]=1,ans++;
			}
		}
	}
	if(k==2)	ans+=sqrt(n);
	cout << ans;
	return 0;
}

WA80,死法不明

(帖子已被作者删除)

(帖子已被作者删除)

不会

(帖子已被作者删除)

声明:本代码 pow 换过快速幂,发现没用,将 sqrt 换成 sqrtl 没用

ok已过,进食后仍:

  1. 关于hack数据,已有帖子提及
  2. pow是double类,建议手写慢速乘