Cod sursa(job #2956)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 20 decembrie 2006 06:42:17
Problema Factorial Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 9.21 kb
#include <fstream.h>
#include <iostream.h>
#include <stdlib.h>

long rep(long n,long f,long p);

long nr;
unsigned long a,c,i,j,aux,auxi,ar,arr;
long b[1000]={0,24999,49998,74998,99999,124999,149998,174997,199999,224998,249998,274998,299998,324998,349997,374998,399998,424997,449998,474997,499999,524998,549998,574998,599998,624999,649998,674997,699998,724998,749998,774997,799997,824998,849997,874997,899998,924997,949997,974996,999999,1024998,1049997,1074999,1099998,1124998,1149997,1174998,1199998,1224997,1249998,1274998,1299997,1324997,1349997,1374998,1399997,1424996,1449997,1474998,1499998,1524998,1549997,1574998,1599997,1624998,1649997,1674997,1699998,1724997,1749997,1774997,1799997,1824997,1849996,1874998,1899997,1924996,1949996,1974998,1999998,2024997,2049996,2074998,2099997,2124997,2149998,2174997,2199997,2224996,2249998,2274997,2299996,2324997,2349997,2374997,2399996,2424996,2449999,2474998,2499999,2524998,2549998,2574998,2599998,2624998,2649998,2674997,2699998,2724997,2749998,2774998,2799997,2824997,2849997,2874998,2899997,2924996,2949999,2974998,2999998,3024997,3049998,3074998,3099997,3124999,3149998,3174997,3199997,3224998,3249998,3274997,3299996,3324998,3349997,3374997,3399997,3424998,3449998,3474997,3499998,3524998,3549997,3574998,3599997,3624998,3649997,3674997,3699997,3724997,3749998,3774997,3799996,3824997,3849997,3874997,3899996,3924997,3949998,3974997,3999997,4024998,4049997,4074997,4099996,4124998,4149997,4174996,4199998,4224997,4249997,4274996,4299997,4324997,4349996,4374997,4399998,4424997,4449997,4474997,4499998,4524997,4549996,4574997,4599997,4624997,4649997,4674996,4699997,4724996,4749997,4774996,4799996,4824997,4849996,4874996,4899998,4924998,4949998,4974997,4999999,5024998,5049997,5074997,5099998,5124998,5149997,5174996,5199998,5224997,5249997,5274998,5299997,5324997,5349996,5374999,5399998,5424997,5449998,5474998,5499998,5524997,5549997,5574998,5599997,5624998,5649997,5674997,5699997,5724997,5749997,5774997,5799996,5824997,5849996,5874998,5899998,5924997,5949997,5974997,5999998,6024997,6049996,6074998,6099997,6124997,6149996,6174997,6199997,6224996,6249998,6274997,6299996,6324996,6349998,6374998,6399997,6424996,6449998,6474997,6499997,6524997,6549997,6574997,6599996,6624997,6649997,6674996,6699997,6724996,6749997,6774996,6799996,6824996,6849997,6874998,6899997,6924996,6949997,6974997,6999997,7024996,7049996,7074997,7099996,7124996,7149997,7174996,7199996,7224995,7249997,7274996,7299995,7324999,7349998,7374998,7399997,7424998,7449998,7474997,7499998,7524998,7549997,7574997,7599997,7624998,7649997,7674996,7699997,7724997,7749997,7774997,7799996,7824998,7849997,7874998,7899997,7924997,7949998,7974997,7999997,8024997,8049997,8074997,8099996,8124998,8149997,8174996,8199996,8224997,8249997,8274996,8299995,8324998,8349997,8374997,8399998,8424997,8449997,8474996,8499998,8524997,8549996,8574997,8599997,8624997,8649996,8674996,8699997,8724996,8749997,8774996,8799997,8824997,8849997,8874997,8899997,8924996,8949997,8974996,8999997,9024997,9049996,9074996,9099996,9124997,9149996,9174995,9199997,9224996,9249996,9274995,9299997,9324997,9349996,9374998,9399997,9424996,9449996,9474997,9499997,9524996,9549995,9574997,9599996,9624996,9649996,9674996,9699996,9724995,9749996,9774998,9799997,9824998,9849997,9874998,9899997,9924997,9949997,9974997,9999998,10024997,10049996,10074997,10099997,10124997,10149996,10174996,10199997,10224996,10249996,10274998,10299997,10324997,10349996,10374998,10399997,10424996,10449998,10474997,10499997,10524996,10549997,10574997,10599996,10624997,10649997,10674996,10699996,10724996,10749998,10774997,10799996,10824997,10849997,10874997,10899997,10924996,10949997,10974996,10999997,11024996,11049996,11074997,11099996,11124996,11149996,11174996,11199996,11224995,11249998,11274997,11299996,11324996,11349997,11374997,11399996,11424995,11449997,11474996,11499996,11524997,11549996,11574996,11599995,11624997,11649996,11674995,11699996,11724997,11749997,11774996,11799996,11824997,11849996,11874997,11899996,11924996,11949996,11974996,11999996,12024996,12049995,12074996,12099995,12124996,12149996,12174995,12199995,12224998,12249999,12274998,12299997,12324999,12349998,12374998,12399997,12424998,12449998,12474997,12499999,12524998,12549997,12574997,12599998,12624998,12649997,12674996,12699999,12724998,12749998,12774998,12799998,12824998,12849997,12874998,12899998,12924997,12949998,12974997,12999998,13024997,13049997,13074997,13099997,13124998,13149997,13174996,13199998,13224998,13249998,13274997,13299997,13324998,13349997,13374997,13399998,13424997,13449997,13474996,13499998,13524997,13549996,13574998,13599997,13624997,13649996,13674998,13699998,13724997,13749998,13774998,13799997,13824997,13849997,13874998,13899997,13924996,13949997,13974997,13999997,14024997,14049996,14074997,14099996,14124997,14149996,14174997,14199998,14224997,14249997,14274997,14299997,14324997,14349996,14374998,14399997,14424996,14449996,14474997,14499997,14524996,14549995,14574997,14599996,14624996,14649999,14674998,14699998,14724997,14749999,14774998,14799997,14824998,14849998,14874998,14899997,14924997,14949998,14974997,14999998,15024997,15049997,15074997,15099997,15124997,15149998,15174997,15199998,15224997,15249998,15274998,15299997,15324997,15349997,15374998,15399997,15424996,15449998,15474997,15499997,15524996,15549997,15574997,15599996,15624999,15649998,15674997,15699997,15724998,15749998,15774997,15799996,15824998,15849997,15874997,15899997,15924997,15949997,15974996,15999997,16024997,16049996,16074997,16099996,16124998,16149997,16174997,16199997,16224997,16249998,16274997,16299996,16324997,16349997,16374997,16399996,16424996,16449997,16474996,16499996,16524997,16549996,16574996,16599995,16624998,16649997,16674996,16699998,16724997,16749997,16774996,16799997,16824997,16849996,16874997,16899997,16924996,16949996,16974996,16999997,17024996,17049995,17074996,17099998,17124998,17149998,17174997,17199998,17224997,17249998,17274997,17299997,17324998,17349997,17374997,17399997,17424997,17449997,17474996,17499998,17524997,17549996,17574996,17599998,17624998,17649997,17674996,17699998,17724997,17749997,17774998,17799997,17824997,17849996,17874998,17899997,17924996,17949997,17974997,17999997,18024996,18049996,18074998,18099997,18124998,18149997,18174997,18199997,18224997,18249997,18274997,18299996,18324997,18349996,18374997,18399997,18424996,18449996,18474996,18499997,18524996,18549995,18574998,18599997,18624997,18649996,18674997,18699997,18724996,18749998,18774997,18799996,18824996,18849997,18874997,18899996,18924995,18949997,18974996,18999996,19024996,19049997,19074997,19099996,19124997,19149997,19174996,19199997,19224996,19249997,19274996,19299996,19324996,19349996,19374997,19399996,19424995,19449996,19474996,19499996,19524995,19549997,19574998,19599997,19624997,19649998,19674997,19699997,19724996,19749998,19774997,19799996,19824998,19849997,19874997,19899996,19924997,19949997,19974996,19999997,20024998,20049997,20074997,20099997,20124998,20149997,20174996,20199997,20224997,20249997,20274997,20299996,20324997,20349996,20374997,20399996,20424996,20449997,20474996,20499996,20524997,20549997,20574997,20599996,20624998,20649997,20674996,20699996,20724997,20749997,20774996,20799995,20824997,20849996,20874996,20899997,20924996,20949996,20974995,20999998,21024997,21049996,21074997,21099997,21124997,21149996,21174996,21199997,21224996,21249997,21274996,21299996,21324996,21349996,21374996,21399996,21424995,21449996,21474995,21499997,21524997,21549996,21574996,21599996,21624997,21649996,21674995,21699997,21724996,21749996,21774995,21799996,21824996,21849995,21874997,21899996,21924995,21949995,21974998,21999998,22024997,22049996,22074998,22099997,22124997,22149997,22174997,22199997,22224996,22249997,22274997,22299996,22324997,22349996,22374997,22399996,22424996,22449996,22474997,22499998,22524997,22549996,22574997,22599997,22624997,22649996,22674996,22699997,22724996,22749996,22774997,22799996,22824996,22849995,22874997,22899996,22924995,22949998,22974997,22999997,23024996,23049997,23074997,23099996,23124997,23149997,23174996,23199996,23224996,23249997,23274996,23299995,23324996,23349996,23374996,23399996,23424995,23449997,23474996,23499997,23524996,23549996,23574997,23599996,23624996,23649996,23674996,23699996,23724995,23749997,23774996,23799995,23824995,23849996,23874996,23899995,23924994,23949997,23974996,23999996,24024997,24049996,24074996,24099995,24124997,24149996,24174995,24199996,24224996,24249996,24274995,24299995,24324996,24349995,24374996,24399995,24424998,24449998,24474998,24499998,24524998,24549997,24574998,24599997,24624998,24649998,24674997,24699997,24724997,24749998,24774997,24799996,24824998,24849997,24874997,24899996,24924998,24949998,24974997};

int main()
{
 ifstream fin("fact.in");
 fin>>nr;
 fin.close();

 ofstream fout("fact.out");
 if(nr==0)
  fout<<'1';
 else    //nrz (nr de 0-uri)=n div 5+(n div 5 div 5)+......pana cand iti ajunge un termen la 0.
 {
  ar=nr/100000;
  auxi=b[ar];
  ar=ar*100000; 
  arr=ar+100000;      
  for(i=ar;i<=arr;i=i+5)
  {
   aux=rep(i,5,0);
   c=aux+auxi;
   auxi=auxi+aux;
    if(c>=nr)
    {
     fout<<i;
     fout.close();
     return 0;
    }         
  }                                   
 }
 fout<<"-1";
 fout.close();
 return 0;
}

long rep(long n,long f,long p)
{
 while(n>1)
 {
  if(n%f==0)
  {
   p=p+1; 
   n=n/f;
  }
  else
   break;
 }       
 return p;  
}