Cod sursa(job #2668778)

Utilizator MateGMGozner Mate MateGM Data 5 noiembrie 2020 12:49:57
Problema Patrate2 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#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,x);
    for(int i=x.size()-1;i>=0;i--)
        ki<<x[i];
    return 0;
}