Cod sursa(job #1585786)

Utilizator claudiuarseneClaudiu Arsene claudiuarsene Data 31 ianuarie 2016 14:41:08
Problema Indep Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
int main()
{
    ifstream f("indep.in");
    ofstream g("indep.out");
    array<array<int, 1001>, 1001> gcd_table;

    for(int i = 0; i <= 1000; ++i){
        gcd_table[i][0] = gcd_table[0][i] = i; }
    for(int i = 1; i <= 1000; ++i){
        for(int j = 1; j <= i; ++j){
            gcd_table[i][j] = gcd_table[j][i] = gcd_table[i-j][j]; } }

    int n;
    f >> n;
    array<array<bignum, 1001>, 2> d = {};

    for(int i = 0, x; i < n; ++i){
        f >> x;
        d[i%2] = d[(i+1)%2];
        for(int j = 1; j <= 1000; ++j){
            d[i%2][gcd_table[j][x]] += d[(i+1)%2][j]; }
        ++d[i%2][x]; }
    g << d[(n+1)%2][1] << '\n';
    return 0;
}