Pagini recente » Cod sursa (job #1796194) | Cod sursa (job #934197) | Cod sursa (job #2507773) | Cod sursa (job #1767131) | Cod sursa (job #1585793)
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std ;
#define MAX 200
#define verf( X, i ) ( i <= X[0] ? X[i] : 0 )
#define A ( *this )
class Mare: protected vector < int > {
static const int base = 1000000000, nbase = 9;
public:
Mare();
Mare(int);
void operator = (Mare&);
void operator += (Mare&);
void operator ++ (void);
void write (void);
};
Mare::Mare() {
this -> resize ( MAX ) ;
}
Mare::Mare(int X) {
this -> resize(MAX) ;
for (A[0] = 0; X; X /= base) {
A[++A[0]] = X % base;
}
}
void Mare::operator = (Mare &B) {
int i;
A[0] = B[0];
for (i = 1; i <= A[0]; i++) {
A[i] = B[i];
}
}
void Mare::operator += (Mare &B) {
int i, t = 0;
for (i = 1; (i <= A[0]) || (i <= B[0]) || (t != 0); i++, t /= base) {
A[i] = (t += verf(A, i) + verf(B, i)) % base;
}
A[0] = i - 1;
}
void Mare::operator ++ (void) {
Mare B = 1 ;
A += B ;
}
void Mare::write (void) {
fprintf(stdout, "%d", A[A[0]]);
int i;
for (i = A[0] - 1; i; i--) {
fprintf(stdout, "%09d", A[i]) ;
}
}
#define Smerenie 1000
int N;
Mare d[2][Smerenie + 1];
int gcd[Smerenie + 1][Smerenie + 1];
/** gcd(a, b). **/
int cmmdc(int a, int b) {
return b ? cmmdc(b, a % b) : a;
}
/** Precalculeaza gcd-urile. **/
void init() {
int i, j;
for (i = 1; i <= Smerenie; i++) {
for (j = i; j <= Smerenie; j++) {
gcd[i][j] = gcd[j][i] = cmmdc(i, j);
}
}
}
int main ( void ) {
int i, j, val, side = 0, write;
FILE *f = fopen("indep.in", "r");
//init();
/* Citirea datelor. */
fscanf(f, "%d", &N);
for (i = 1; i <= N; i++) {
fscanf(f, "%d", &val);
/* Programare dinamica pe 2 linii. */
write = (i & 1);
for (j = 1; j <= Smerenie; j++) {
d[write][j] = d[side][j];
}
for (j = 1; j <= Smerenie; j++) {
d[write][cmmdc(val, j)] += d[write][j];
}
++d[side = write][val];
}
fclose(f);
/* Afisarea solutiei. */
freopen("indep.out", "w", stdout);
d[side][1].write();
fclose(stdout);
/// Multumim Doamne!
puts("Doamne ajuta!");
}