Cod sursa(job #2465758)

Utilizator petrisorvmyVamanu Petru Gabriel petrisorvmy Data 30 septembrie 2019 19:39:19
Problema Indep Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
#define ll long long
#define NMAX 1010
#define base 100
using namespace std;

ifstream f("indep.in");
ofstream g("indep.out");
ll pd[NMAX][NMAX], ceva[NMAX],n;
void aduna(ll a[NMAX], ll b[NMAX])
{
    ll i,t = 0;
    for(i = 1; i <= a[0] || i <= b[0] || t > 0 ; ++i)
    {
        a[i] = a[i] + b[i] + t;
        t = a[i] / base;
        a[i] %= base;
    }
    a[0] = i - 1;
}
int main()
{
    f >> n;
    ceva[0] = ceva[1] = 1;
    for(int i = 1; i <= n; ++i)
    {
        int x;
        f >> x;
        for(int j = 1; j <= 1000; ++j)
            aduna(pd[__gcd(x,j)], pd[j]);
        aduna(pd[x] , ceva);
    }
    g << pd[1][pd[1][0]];
    for(int i = pd[1][0] - 1; i >= 1; --i)
    {
        if(pd[1][i] < 10)
            g << "00";
        else if(pd[1][i] < 100)
            g << '0';
        g << pd[1][i] ;
    }
    f.close();
    g.close();
    return 0;
}