cf1114 C. Trailing Loves (or L'oeufs?)

注意题目中一旦有大于1e9的数字,所有变量全用Longlong替代,包括i,j

或者一开始直接define int longlong ,然后之后主函数用int32_t,输入输出用int32_t替代

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e18+7;
ll p[1000010];
ll c[1000010];
ll res=INF;
int main()
{
    ll n,x;
    scanf("%lld%lld",&n,&x);
    if(n==1)
    {
        printf("0\n");
        return 0;
    }
    int m=0;
    for(int i=2;1LL*i*i<=x;i++)//一旦出现大于10^9的数字,所有变量(包括i,j都要用long long),惨痛的教训 
    {
        printf("%d\n",i);
        if(x%i==0){
            p[++m]=i,c[m]=0;
            while(x%i==0) x/=i,c[m]++;
        }
    }
    if(x>1) p[++m]=x,c[m]=1;
    int tot=0;
    //printf("***\n");
    for(int i=1;i<=m;i++)
    {
        ll tmpn=n;
        ll num=0;
        //printf("****\n");
        while(tmpn)
        {
            //printf("%d\n",++tot);
            num+=tmpn/p[i];
            tmpn/=p[i];
        }
        num/=c[i];
        res=min(num,res);
    }
    printf("%lld\n",res);
}

猜你喜欢

转载自www.cnblogs.com/lishengkangshidatiancai/p/10361154.html