Pagini recente » Cod sursa (job #1045543) | Cod sursa (job #1571348) | Cod sursa (job #376721) | Cod sursa (job #2435818) | Cod sursa (job #2413514)
#include <iostream>
#define NMAX 500
#define VALMAX 1000
#define MAX_CIFRE 200
using namespace std;
class Huge {
public :
long long n;
char cf [ MAX_CIFRE ] ;
Huge() {
long long i;
for(i = 0; i < MAX_CIFRE; i++)
cf[i] = 0;
n = 1;
}
Huge(long long x) {
long long i ;
i = 0 ;
while (x > 0) {
cf[i] = x % 10 ;
i++;
x /= 10 ;
}
n = i ;
while (i < MAX_CIFRE ) {
cf[i] = 0 ;
i++;
}
}
void adun (long long x) {
long long i, tr ;
i = 0 ;
tr = 0 ;
while (x > 0) {
cf[i] += tr + x % 10 ;
tr = cf[i] / 10 ;
cf[i] = cf[i] % 10 ;
i++;
x /= 10 ;
}
n = i ;
while (i < MAX_CIFRE ) {
cf[i] = 0 ;
i++;
}
}
Huge operator+(Huge nr) {
long long i, tr ;
Huge rez(0) ;
i = 0 ;
tr = 0 ;
while ( (i < n || i < nr.n || tr > 0) && i < MAX_CIFRE ) {
tr = tr + (cf[i] + nr.cf[i] ) ;
rez.cf[i] = tr%10 ;
tr /= 10 ;
i++;
}
rez.n = i ;
return rez ;
}
void puthuge (FILE *fout ) {
long long i ;
i = MAX_CIFRE-1;
while (i > 0 &&cf[i] == 0 )
i--;
fprintf (fout, "%d", cf[i] ) ;
i--;
while (i >= 0 ) {
fprintf (fout, "%d", cf[i] ) ;
i--;
}
}
};
long long v [ NMAX + 1 ] ;
Huge v2 [ VALMAX + 1 ] ;
long long gcd (long long a, long long b) {
long long r ;
while ( b > 0 ) {
r = a % b ;
a = b ;
b = r ;
}
return a ;
}
int main() {
FILE *fin, *fout ;
fin = fopen ("indep.in", "r" ) ;
fout = fopen ("indep.out", "w" ) ;
long long n, i, j, g ;
fscanf (fin, "%lld", &n ) ;
for (i = 0 ; i < n ; i++ ) {
fscanf (fin, "%lld", &v[i] ) ;
for (j = 1 ; j <= VALMAX ; j++ ) {
if (v2[i].n > 0 ) {
g = gcd (v[i], j) ;
v2[g] = v2[g] + v2[j] ;
}
}
v2[v[i]].adun(1) ;
}
v2[1].puthuge (fout) ;
return 0;
}