春测 T2,洛谷 AC,小图灵 95pts WA on #17 求助
  • 板块学术版
  • 楼主rzh123
  • 当前回复27
  • 已保存回复27
  • 发布时间2023/3/4 21:56
  • 上次更新2023/10/23 23:03:04
查看原帖
春测 T2,洛谷 AC,小图灵 95pts WA on #17 求助
237530
rzh123楼主2023/3/4 21:56

本来还以为小图灵从洛谷搬的数据,结果不一样

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using lll=__int128;
constexpr unsigned M=107;
long long n;
int m;
vector<int> p;
int d[M];
inline ll qp(ll a,ll b){
	ll s=1;
	while(b){
		if(b&1) s*=a;
		a*=a;
		b>>=1;
	}
	return s;
}
inline ll wtcl(ll x,int k){
	ll t=pow((long double)x,(long double)1.0/k);
	if(qp(t+1,k)==x) return t+1;
	return t;
}
ll f[M];
signed main(){
	/*freopen("power.in","r",stdin);
	freopen("power.out","w",stdout);*/
	ll ans{0};
	scanf("%lld%d",&n,&m);
	if(m==1){
		printf("%lld\n",n);
		return 0;
	}
	ans=1ll;
	for(int i{60};i>=m;--i){
		f[i]=wtcl(n,i)-1;			//有多少 x=a^i
//		printf("f[%d]=%lld\n",i,f[i]);
		for(int j{2};i*j<=60;++j){
			f[i]-=f[i*j];
		}
//		printf("f[%d]=%lld\n",i,f[i]);
		ans+=f[i];
	}
	printf("%lld",ans);
	return 0;
}
/*
<=100 prime:25
x=a^b ,b!=prime:
	b=pq,x=(a^p)^q
1=1^x
*/
/*
2^60>1e18
*/
2023/3/4 21:56
加载中...