手滑痛失35pts,想不通
查看原帖
手滑痛失35pts,想不通
538821
m1kusama楼主2023/3/9 18:26

这两份代码为啥得分一个5pts,一个40pts

按理来说都是40pts啊

#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,k;
int ans=1;
bool a[100000005];
signed main(){
	cin.tie(0);
	cout.tie(0);
	cin>>n>>k;
	if(k==1) cout<<n;
	else{
		int now=2;
		while(pow(now,k)<=n){
			int mo=2;
			int z=pow(now,mo);
			if(z*z<=n){
				if(a[z]==1){
					now++;
					continue;
				} 
			}
			
			while(pow(now,mo)<=n){
			int x=pow(now,mo);
				if(x*x<=n){
					a[x]=1;
				}
				if(mo>=k){
					ans++;
				}
				mo++;
			}
			now++;
		}
		cout<<ans;
	}
	
	return 0;
}
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,k;
int ans=1;
bool a[100000005];
signed main(){
	freopen("power.in","r",stdin);
	freopen("power.out","w",stdout);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>k;
	if(k==1) cout<<n;
	else{
		int now=2;
		while(pow(now,k)<=n){
			int mo=2;
			int z=pow(now,mo);
			if(z*z<=n){
			//	if(a[z]==1){
					now++;
					continue;
				} 
		//	}
			
			while(pow(now,mo)<=n){
			int x=pow(now,mo);
			//	if(x*x<=n){
					a[x]=1;
			//	}
				if(mo>=k){
					ans++;
				}
				mo++;
			}
			now++;
		}
		cout<<ans;
	}
	
	return 0;
}
2023/3/9 18:26
加载中...