Pagini recente » Cod sursa (job #2729499) | Cod sursa (job #2718007) | Cod sursa (job #34390) | Cod sursa (job #1646015) | Cod sursa (job #2469231)
#include <iostream>
#include <fstream>
using namespace std;
struct bigbrain{
int digi[170];
bool zero = true;
bigbrain(){
for(int i = 0; i <= 160; i++){
digi[i] = 0;
}
}
bigbrain(int a) : digi(){
zero = (a==0);
for(int i = 0; i <= 160 && a > 0; i++){
digi[i] = a%10;
a /= 10;
}
}
void write(ostream & out){
bool yes = false;
for(int i = 160; i >= 0; i--){
if(digi[i] != 0){
yes = true;
}
if(yes){
out << digi[i];
}
}
if(!yes){
out << 0;
}
out << "\n";
}
void add(bigbrain rhs){
int r = 0;
for(int i = 0; i <= 160; i++){
digi[i] += rhs.digi[i] + r;
r = digi[i] / 10;
digi[i] %= 10;
}
zero = false;
}
// void add(int rhs){
// int r = 0;
// for(int i = 0; i <= 160 && rhs > 0; i++){
// digi[i] += rhs%10 + r;
// rhs /= 10;
// r = digi[i] / 10;
// digi[i] %= 10;
// }
// zero = false;
// }
};
ifstream fin("indep.in");
ofstream fout("indep.out");
int gcd(int a, int b){
if(a == 0){
return b;
}
return gcd(b%a, a);
}
int n;
bigbrain di[1014];
void namica(){
int a;
fin >> a;
for(int d = 1; d <= 1000; d++){
if(!di[d].zero){
di[gcd(d, a)].add(di[d]);
}
}
di[a].add(1);
}
int main(){
fin >> n;
for(int i = 0; i < n; i++){
namica();
}
di[1].write(fout);
}