Pagini recente » Cod sursa (job #1333055) | Cod sursa (job #1862739) | Cod sursa (job #1015357) | Cod sursa (job #1044881) | Cod sursa (job #2668789)
#include <iostream>
#include <fstream>
#include<vector>
using namespace std;
ifstream be ("patrate2.in");
ofstream ki("patrate2.out");
vector<int> szorzas(vector<int>&a,vector<int>&b)
{
int an=a.size();
int bn=b.size();
vector<int>c(an+bn,0);
for(int i=0;i<an;i++){
int carry=0;
for(int j=0;j<bn;j++){
int sum=(a[i]*b[j])+c[i+j]+carry;
carry=sum/10;
c[i+j]=sum%10;
}
if(carry>0)c[i+bn]+=carry;
}
int i=c.size()-1;
while(i>0&&c[i]==0)
i--;
c.resize(i+1);
return c;
}
//vector<int>x={1};
vector<int>gyhat(vector<int>&n,int p,vector<int>&x)
{
if(p!=0)
{
x=gyhat(n,p/2,x);
if(p%2==0)
{
return szorzas(x,x);
}
else if(p%2==1){
x=szorzas(x,x);
return szorzas(x,n);
}
}
else return x;
}
int main()
{
int p;
be>>p;
vector<int>n={2};
vector<int>x={1};
vector<int>temp(10);
vector<int>x1={1};
for(int i=1;i<=p;i++)
{
temp[0]=i;
x=szorzas(x,temp);
//temp.clear();
}
x1=gyhat(n,p*p,x1);
x=szorzas(x,x1);
for(int i=x.size()-1;i>=0;i--)
ki<<x[i];
return 0;
}