M00PAIR - 0 0 Pairs
Tác giả: happyboy99x
Ngôn ngữ: C++
#include<cstdio>
const int N = 1000, BASE = 1000000000, LOG_BASE = 9, N_DIGIT = 34;
struct BigInteger {
int d[N_DIGIT], n;
void operator ++ () {
for(int i = 0; i < n; ++i)
if(++d[i] == BASE) d[i] = 0;
else return;
d[n++] = 1;
}
void operator += (const BigInteger &a) {
if(a.n > n) n = a.n;
int rem = 0;
for(int i = 0; i < n; ++i) {
int p = d[i] + a.d[i] + rem;
if(p >= BASE) d[i] = p - BASE, rem = 1;
else d[i] = p, rem = 0;
}
if(rem) d[n++] = rem;
}
void print() {
printf("%d", d[n-1]);
for(int i = n-2; i >= 0; --i)
printf("%0*d", LOG_BASE, d[i]);
printf("\n");
}
} cOne[N+1], cZero[N+1];
int main() {
for(int i = 1; i <= N; ++i) {
cOne[i] = cOne[i-1];
cOne[i] += cZero[i-1];
cZero[i] = cOne[i];
if(i % 2 == 0) ++cZero[i];
}
for(int n; scanf("%d", &n) == 1; cZero[n].print());
return 0;
}