Pagini recente » Cod sursa (job #1783131) | Cod sursa (job #3252577) | Cod sursa (job #80606) | Cod sursa (job #1385761) | Cod sursa (job #2668786)
#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};
x=gyhat(n,p*p,x);
vector<int>temp;
while(p>0)
{
temp.push_back(p%10);
p=p/10;
}
x=szorzas(x,temp);
for(int i=x.size()-1;i>=0;i--)
ki<<x[i];
return 0;
}