Pagini recente » Cod sursa (job #1482337) | Cod sursa (job #60397) | Cod sursa (job #1681382) | Cod sursa (job #1310190) | Cod sursa (job #2469210)
#include <iostream>
#include <fstream>
using namespace std;
struct bigbrain{
int digi[214];
bigbrain(){
for(int i = 0; i <= 200; i++){
digi[i] = 0;
}
}
bigbrain(int a) : digi(){
digi[0] = a%10;
}
void write(ostream & out){
bool yes = false;
for(int i = 200; 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 <= 200; i++){
digi[i] += rhs.digi[i] + r;
r = digi[i] / 10;
digi[i] %= 10;
}
}
bool notzero(){
for(int i = 200; i >= 0; i--){
if(digi[i] != 0){
return true;
}
}
return 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].notzero()){
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);
}