Cod sursa(job #1544686)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 6 decembrie 2015 13:43:57
Problema Zero 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<cstdio>
using namespace std;
long long minim(long long a,long long b){
    if(a<b)
        return a;
    return b;
}
long long power(long long n,long long d){
    long long ans=0,p,x;
    for(p=d;p<=n;p*=d){
        x=n/p-1;
        ans=ans+x*(x+1)*p/2+(x+1)*(n-(x+1)*p+1);
    }
    return ans;
}
int main(){
    freopen("zero2.in","r",stdin);
    freopen("zero2.out","w",stdout);
    int t,p,i;
    long long n,b,sol,d,inf=1;
    for(i=1;i<=62;i++)
        inf*=2;
    for(t=1;t<=10;t++){
        scanf("%lld%lld",&n,&b);
        sol=inf;
        for(d=2;d*d<=b;d++)
            if(b%d==0){
                p=0;
                while(b%d==0){
                    b/=d;
                    p++;
                }
                sol=minim(sol,power(n,d)/p);
            }
        if(b!=1)
            sol=minim(sol,power(n,b));
        printf("%lld\n",sol);
    }
    return 0;
}