Cod sursa(job #3150642)

Utilizator popuPop Matei Tudor popu Data 17 septembrie 2023 19:45:29
Problema Patrate2 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");

#define f first
#define s second
#define MOD 1000007

const int DIGITS_MAX = 15828;
const int POWER = 27;

struct HugeNumber {
		short digits = 0;
		char d[DIGITS_MAX]{};

		HugeNumber(int a) {
			do
				d[digits++] = a % 10;
			while(a /= 10);
		}

		friend HugeNumber operator*(const HugeNumber b, const int a) {
			HugeNumber ret(0);
			ret.digits = 0;
			int i = 0, carry = 0;

			while(i < b.digits){
				carry += b.d[i++] * a;
				ret.d[ret.digits++] = carry % 10;
				carry /= 10;
			}

			while(carry){
				ret.d[ret.digits++] = carry % 10;
				carry /= 10;
			}

			return ret;
		}

		friend void operator*=(HugeNumber &b, const int a) {
			b = b * a;
		}

		void print(ofstream &fout) {
			for(int i = digits - 1; i >= 0; --i)
				fout.put(d[i] + '0');

			fout.put('\n');
		}
};

int main()
{
    int n;
    HugeNumber x(1);
    fin>>n;
    for(int i=1;i<=n;++i){
        x*=2;
        x*=i;
    }
    x*=2;
    x*=n;
    x*=(n-1);
    if(n>1)
        x.print(fout);
    else
        fout<<2;
    return 0;
}