Cod sursa(job #1437974)

Utilizator george.stefanGeorge Stefan george.stefan Data 18 mai 2015 21:38:01
Problema Factorial Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 2.02 kb
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    /*
       (p-5)%6==0 => -1
       N=5^x=> p-i=-1 ptr i=1:x-1;
        in rest -> +5 in poz != -1

    */
    FILE *f=fopen("fact.in","rt");
    FILE *g=fopen("fact.out","wt");

    long *v;
    int nu[56]={5,25,124,125,623,624,625,3122,3123,3124,3125,15621,15622,15623,15624,15625, 78120, 78121, 78122, 78123 ,78124, 78125 ,390619 ,390620 ,390621 ,390622 ,390623 ,390624 ,390625 ,1953118 ,1953119, 1953120, 1953121 ,1953122 ,1953123, 1953124, 1953125, 9765617 ,9765618, 9765619, 9765620, 9765621 ,9765622 ,9765623 ,9765624 ,9765625, 48828116, 48828117 ,48828118, 48828119, 48828120, 48828121, 48828122, 48828123 ,48828124, 48828125};
    long long i,p,j;

   fscanf(f,"%lld",&p);

    v=calloc(100000000,sizeof(*v));

    v[0]=1;

    /*for(i=1;i<=11;i++)
    {
        p=1;
        for(j=0;j<i;j++)
            p*=5;
        v[p]=-1;

        for(j=1;j<i-1;j++)
            v[p-j]=-1;
    }
    int nr=0;
    for(i=0;i<100000000;i++)
        if(v[i]==-1)
            {   nr++;
                fprintf(g,"%d ",i);
            }
            printf("%d",nr);
    */
    j=5;

    for(i=0;i<56;i++)
        v[nu[i]]=-1;


    if(v[p]==-1)
        fprintf(g,"%d",v[p]);
    if(p>10)
        fprintf(g,"%d",(p-(p/5))*5);
    if(p>5 && p<=10)
        fprintf(g,"%d",(p-(p/5)+1)*5);
    if(p>0 && p<5)
        fprintf(g,"%d",(5*p));
    /*
    j=1;

    i=5;

    while(i<100000000)
    {
        if(i%25==0)
        {
            v[j+1]=i;
            if(v[j+1]==p)
                i=100000001;
            j++;
        }
        else
        {
            v[j]=i;
            if(v[j]==p)
                i=100000001;
        }

        j++;
        i+=5;

    }

    if(v[p])
        {
            fprintf(g,"%lld",v[p]);
            printf("%lld",v[p]);
        }
    else
    {
        fprintf(g,"-1");
        printf("-1");
    }
    for(i=0;i<100;i++)
    printf(" %d\n",v[i]);

    */


    return 0;
}