Pagini recente » Cod sursa (job #743831) | Cod sursa (job #1501827) | Cod sursa (job #2978289) | Cod sursa (job #1519631) | Cod sursa (job #2105002)
#include <fstream>
using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
typedef int nrmare[5010];
void produsMic(nrmare a, int x) {
int i, t = 0;
for(i=1; i<=a[0]; i++, t/=10) {
t+=x*a[i];
a[i]=t%10;
}
while(t) {
a[++a[0]] = t%10;
t/=10;
}
}
void produsMare(nrmare x, nrmare y) {
int i, j, t = 0;
nrmare z;
z[0] = x[0] + y[0] -1;
for(i=1; i<=x[0]+y[0]; i++)
z[i] = 0;
for(i=1; i<=x[0]; i++)
for(j=1; j<=y[0]; j++)
z[i+j-1] = x[i] * y[j];
for(i=1; i<=z[0]; i++) {
t+=z[i];
z[i] = t%10;
t/=10;
}
if(t)
z[++z[0]] = t;
for(i=0; i<=z[0]; i++)
x[i] = z[i];
}
nrmare a, b;
int n, i;
int main()
{
f>>n; a[0]=a[1]=1;
for(i=n; i>=1; i--)
produsMic(a, i);
n*=n;
b[0] = 1; b[1] = 2;
while(n>0) {
if(n%2 == 1) {
n--;
produsMare(a, b);
}
else {
n/=2;
produsMare(b, b);
}
}
for(i=1; i<=a[0]; i++)
g<<a[a[0]-i+1];
g<<'\n';
return 0;
}