Cod sursa(job #2138)

Utilizator MARCELMIHALCEA MARICEL MARCEL Data 16 decembrie 2006 07:58:56
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<stdio.h>

long long N;
int doi,trei,patru,cinci,sase,sapte,opt,noua, solution;

void ReadData()
{
 FILE *f=fopen("policefm.in","r");
 fscanf(f,"%lld",&N);
 fclose(f);
}

void PrintSol()
{
int i;
FILE *fout=fopen("policefm.out","w");
if (solution == 0) fprintf(fout,"0\n");
  else
  {
 if (doi>0)
    for (i=1;i<=doi;i++) fprintf(fout,"2");
 if (trei>0)
    for (i=1;i<=trei;i++) fprintf(fout,"3");
 if (patru>0)
    for (i=1;i<=patru;i++) fprintf(fout,"4");
 if (cinci>0)
    for (i=1;i<=cinci;i++) fprintf(fout,"5");
 if (sase>0)
    for (i=1;i<=sase;i++) fprintf(fout,"6");
 if (sapte>0)
    for (i=1;i<=sapte;i++) fprintf(fout,"7");
 if (opt>0)
    for (i=1;i<=opt;i++) fprintf(fout,"8");
 if (noua>0)
    for (i=1;i<=noua;i++) fprintf(fout,"9");
 fprintf(fout,"\n");
 }
fclose(fout);
}

int main()
{
 ReadData();
 solution=1;
 doi=trei=patru=cinci=sase=sapte=opt=noua=0;
 while (N%2 == 0)
    {
     doi++;N=N/2;
    }
 while (N%3 == 0)
    {
     trei++;N=N/3;
    }
 while (N%5 == 0)
    {
     cinci++;N=N/5;
    }
 while (N%7 == 0)
    {
     sapte++;N=N/7;
    }
 if (N != 1) solution=0;
   else
     {
      if (doi>=3)
	 {
	  opt=opt+doi/3;
	  doi=doi%3;
	 }
      if (trei>=2)
	 {
	  noua=noua+trei/2;
	  trei=trei%2;
	 }
      if ((doi>=1)&&(trei>=1))
	 {
	  sase++;
	  doi--;
	  trei--;
	 }
      if (doi>=2)
	 {
	  patru++;
	  doi=doi-2;
	 }
     }
 PrintSol();
 return 0;
}