是我有问题还是数据有问题
  • 板块灌水区
  • 楼主Judgelight
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/12/8 17:55
  • 上次更新2023/10/27 00:07:19
查看原帖
是我有问题还是数据有问题
461616
Judgelight楼主2022/12/8 17:55

P3927

我全WA,然而把第一个点下下来

10 10

我的输出是2,和数据一模一样

然而却没过这个点

想问一问why

#include<bits/stdc++.h>
#define int long long
#define N 1000009
using namespace std;
int n,k,st[N],primes[N],cnt,idx,ans=1e13,nn;
struct Divisor{
	int num,sum;
}d[N];
void init(int n){
	for(int i=2;i<=n;i++){
		if(!st[i]){
			primes[++cnt]=i;
		}
		for(int j=1;j<=cnt&&primes[j]*i<=n;j++){
			st[primes[j]*i]=1;
			if(i%primes[j]==0){
				break;
			}
		}
	}
}
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>k;
	init(N);
	for(int i=1;i<=cnt&&primes[i]*primes[i]<=k;i++){
		int x=primes[i];
		if(k%x==0){
			d[++idx].num=x;
			while(k%x==0){
				d[idx].sum++;
				k/=x;
			}
		}
	}
	if(k>1){
		d[++idx].num=k,d[idx].sum=1;
	}
	nn=n;
	for(int i=1;i<=idx;i++){
		int x=d[i].num,have=0;
		n=nn;
		while(n){
			have+=n/x;
			n/=x;
		}
		ans=min(ans,have/d[i].sum);
	}
	cout<<ans;
	return 0;
}
2022/12/8 17:55
加载中...