Cod sursa(job #66948)

Utilizator info_arrandrei gigea info_arr Data 21 iunie 2007 21:37:15
Problema GFact Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
using namespace std;

#define ll long long

#include <stdio.h>
#include <fstream>

FILE *fin=fopen("gfact.in","r"),
     *fout=fopen("gfact.out","w");
     
typedef struct 
 {
   int n,p;
 } data;       
     
ll p;
int q,m,x[100];
data d[100];     
    
void descompune()
{
 int ind=0,i=2,ct;
 while (p>1)
  {
    if (p%i==0) {
      ct=0;     
      ind++;      
      while (p%i==0) { p/=i; ct++; }
       d[ind].n=i; d[ind].p=ct;
     }
    i++;
  }    
 m=ind;   
}   
 
int ok()
{
  int i;
  for (i=1; i<=m; i++)
   if (x[i]<d[i].p) return 0;
  return 1;
}    
        
void cautafact(void)
{
 int i,aux,p=1;
 memset(x,0,sizeof(x));
 while (1>0)
  {
    aux=p;
    for (i=1; i<=m; i++)
     while (aux%d[i].n==0)
      {
       aux/=d[i].n;
       x[i]++;
      }
    if (ok()) break;
    p++;
  }
 fprintf(fout,"%d",p);
}         
                
     
int main()
{
    
    fscanf(fin,"%lld %d",&p,&q);
    descompune();
    cautafact();
    
    fclose(fin); fclose(fout);
    
    return 0;
    
}