Cod sursa(job #51764)

Utilizator MirceampMuresan Mircea Paul Mirceamp Data 16 aprilie 2007 19:38:28
Problema Zero 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.91 kb
#include<fstream>
#include<math.h>
#define MIN 10000

using namespace std;

short int n,b,c[100],d[100],k,min;
int main()
{
    ifstream fin("zero2.in");
    ofstream fout("zero2.out");
int i,j,l,min,cont=0,aux = 0,p,z;
 
    while(fin>>n>>b)
    {
         min = MIN;
         if(b == 3 || b == 2)
         aux = 1;
         else
         {
         for(i = 2; i <= b/2; i++)
         {
         if(b%i != 0)
         aux = 1;
         if(b%i == 0)
         {
         aux = 0;
         break;
         }
         }
         }
         if(aux == 1)
         {
                min = 0;
                for(i = 2; i <= n; i++)
                   {
                        for(j = 1; j <= i; j++)
                              if(j%b == 0)
                                 {
                                 z = j;
                                 while(z%b == 0)
                                 {
                                           min++;
                                           z/=p;
                                 }   
                                 }     
                              
                   }
         }
         if(aux == 0)
         {
             if(pow(sqrt(b),2)== b)
               {
                     min = 0; 
                     p = (int)sqrt(b);
                for(i = 2; i <= n; i++)
                   {
                        for(j = 1; j <= i; j++)
                              if(j%p == 0)
                                 {
                                 z = j;
                                 while(z%p == 0)
                                 {
                                           min++;
                                           z/=p;
                                 }   
                                 }     
                                 
                   }
                   min=min/2;
                }
          if(pow(sqrt(b),2)!= b)
         {                          
         for(i = 2; i <= b/2; i++)
         if(b%i == 0)
         c[k++] = i;
         for(i = 2; i <= n; i++)
         {
               for(j = 1; j <= i; j++)
               {
                     for(l = 0; l < k; l++)
                     if(c[l] == j)
                     d[c[l]]++;
                     else
                     continue;
               }
         }
         for(i = 1; i <= b/2; i++)
         if(d[i] == 0)
         cont = 1;
         else
         {
         cont = 0;
         break;
         }
         if(cont == 1)
         min = 0;
         else
         {
         for(i = 1; i <= b/2; i++)
         if(d[i] != 0)
         if(d[i] < min)
         min = d[i];
         for(i = 2; i <= k/2; i++)
         {
               c[i] = 0;
               d[i] = 0;
         }
         }
         }
         }
         fout<<min<<"\n";
    }

fin.close();
fout.close();

return 0;
}