Cod sursa(job #138858)

Utilizator sarabogdanSara Nicolae Bogdan sarabogdan Data 19 februarie 2008 13:22:03
Problema Factoriale Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 101

int a[N] , b[N] , c[N];
int n , i , j , k ;
long long sol = 1;
int main()
{
    freopen("factoriale.in","r",stdin);
    freopen("factoriale.out","w",stdout);
    
    
    scanf("%d%d",&n,&k);
    b[1] = b[0] = 1;
    for (i = 2 ; i <= N ; ++i)
    {
        if (b[i]==0)
        {
                    c[0]++;
                    c[c[0]] = i;
                    for (j = 2*i ; j <= N ; j+=i)
                        b[j] = 1;
        }
    }
    
    
    for (i = 1 ; i <= n ; i++)
    {
        int t;
        scanf("%d",&t);
        for (int q = 2 ; q <= t ; q++)
        {
            int aux = q;
        for (j = 1 ; j <= c[0] ; j++)
        {
            
            while(aux%c[j]==0)
            {
                            a[c[j]]++;
                            aux/=c[j];
            }
        }
        }
    }
    
    for (i = 1 ; i <= N ; i++)
    {
        if (a[i]%k!=0&&a[i]!=0)
        {
                      long long p = a[i];
                      while(p%k != 0)
                                   p++;
                      sol*= pow(i,p-a[i]);
        }
    }  
    printf("%lld",sol);
    return 0;
}