Cod sursa(job #1804222)

Utilizator rares1012Rares Cautis rares1012 Data 12 noiembrie 2016 12:43:17
Problema GFact Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#include <stdlib.h>

inline unsigned long long int nrdiv(unsigned long long int n,unsigned long long int k)
{
    unsigned long long int s=0;
    while(n>0){
        s+=n/k;
        n=n/k;
    }
    return s;
}

int main()
{
    unsigned long long int z,q,p=1,r=0;
    FILE*fi,*fo;
    fi=fopen("gfact.in","r");
    fo=fopen("gfact.out","w");
    fscanf(fi,"%llu%llu",&z,&q);
    p=p<<32;
    while(p>0)
        {
            if(nrdiv(p+r,z)<=q)
                r+=p;
            p/=2;
        }
    while(nrdiv(r,z)>=q)
        r--;
    r++;
    if(nrdiv(r,z)==q)
        fprintf(fo,"%llu",r);
    else fprintf(fo,"-1");
    fclose(fi);
    fclose(fo);
    return 0;
}