Pagini recente » Cod sursa (job #452656) | Cod sursa (job #2690185) | Cod sursa (job #2820860) | Cod sursa (job #747909) | Cod sursa (job #1184707)
#include <fstream>
#include <iomanip>
#include <vector>
const unsigned long long base=1000000;
inline void mul(std::vector<unsigned long long> &mare, unsigned long long x){
unsigned long long rest=0;
for(unsigned i=0;i<mare.size();++i){
mare[i]=mare[i]*x+rest;
rest=mare[i]/base;
mare[i]%=base;
}
while(rest!=0){
mare.push_back(rest%base);
rest/=base;
}
}
int main(){
std::ifstream fin("patrate2.in");
std::ofstream fout("patrate2.out");
unsigned long long n; fin>>n;
std::vector<unsigned long long> mare(1,1);
mare.reserve(530);
for(unsigned long long i=2;i<=n;++i) mul(mare,i);
n*=n;
while(n>0){
if(n>30){ mul(mare,1ull<<30); n-=30; }
else{ mul(mare,1ull<<n); n=0; }
}
int i=mare.size()-1;
fout<<mare[mare.size()-1];
--i;
for(;i>=0;--i) fout<<std::setfill('0')<<std::setw(6)<<mare[i];
fout<<'\n';
}