社区讨论
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 条回复,欢迎继续交流。
正在加载回复...