社区讨论

WA,100pts求条

P9118[春季测试 2023] 幂次参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkhzwuus
此快照首次捕获于
2026/01/17 15:38
上个月
此快照最后确认于
2026/01/17 15:39
上个月
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
unordered_set<int>st;
unordered_set<int>q;//存平方数 
int n,k,cnt=0;
bool flag;
int qpow(int a,int b){
	int res=1;
	while(b){
		if(b&1)res=res*a;
		a=a*a;
		b>>=1;
	}
	return res;
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>k;
	if(n<=k){
		cout<<1;
		return 0;
	}
	st.insert(1);
	if(k==2){
		flag=true;
		k=3;
	}
	int a=2,ans=qpow(a,k);
	while(ans<=n){
		st.insert(ans);
		if((int)sqrtl(ans)*(int)sqrtl(ans)==ans){
			q.insert(ans);
		}
		while(ans<=n/a){
			if(st.find(ans*a)!=st.end())break;
			st.insert(ans*a);
			ans*=a;
			if((int)sqrtl(ans)*(int)sqrtl(ans)==ans){
				q.insert(ans);
			}
		}
		a++;
		ans=qpow(a,k);
	}
	if(flag==true)cout<<st.size()+(int)sqrtl(n)-q.size()-1;
	else cout<<st.size();
}

回复

0 条回复,欢迎继续交流。

正在加载回复...