题解 | #整除问题#
整除问题
https://www.nowcoder.com/practice/8e29045de1c84d349b43fdb123ab586a
#include<bits/stdc++.h>
using namespace std;
bool isprime(int x){
for(int i=2;i<x;i++){
if(x%i==0){
return false;
}
}
return true;
}
void prime(int x,vector<int>& p){
for(int i=2;i<=x;i++){
while(x%i==0){
x/=i;
p[i]++;
}
}
}
void isp(int x,vector<int>& p){
for(int i=2;i<=x;i++){
if(isprime(i)){
int w=i;
while(w<=x){
int z=x/w;
p[i]+=z;
w*=i;
}
}
}
}
int main(){
int n,a;int k;
while(cin>>n>>a){
k=INT_MAX;
vector<int> p1(1000,0);vector<int> p2(1000,0);
isp(n,p1);prime(a,p2);
for(int i=2;i<1000;i++){
if(p2[i]!=0){
k=min(k,p1[i]/p2[i]);
}
}
if(k==INT_MAX)cout<<0<<endl;
else
cout<<k<<endl;
}
}

影石Insta360公司氛围 452人发布
查看11道真题和解析