⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1980.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1980 on 2005-10-27 at 17:18:34 */ 
#include <cstdio>
#include <cstring>

const int MAX = 64;
const int LIMIT = 100000;
const int N_MAX = 128;

class BigInt {
private:
	long long n[MAX];
	int getLen(int k) {
		int i;
		for(i = 0; k != 0; i++) {
			k /= 10;
		}
		return i;
	}
public:
	BigInt() {
		memset(n, 0, sizeof(n));
	}
	void set(int i) {
		n[0] = i;
	}
	void operator+=(const BigInt& bi) {
		int i;
		for(i = 0; i < MAX; i++) {
			n[i] += bi.n[i];
			if(n[i] >= LIMIT) {
				n[i+1] += n[i] / LIMIT;
				n[i] %= LIMIT;
			}
		}
	}
	void operator=(const BigInt& bi) {
		int i;
		for(i = 0; i < MAX; i++) {
			n[i] = bi.n[i];
		}
	}
	void operator*=(const BigInt& bi) {
		int i, j, k;
		BigInt b;
		for(i = 0; bi.n[i] != 0; i++) {
			for(j = 0; n[j] != 0; j++) {
				b.n[i+j] += bi.n[i] * n[j];
				for(k = 0; b.n[i+j+k] >= LIMIT; k++) {
					b.n[i+j+k+1] += b.n[i+j+k] / LIMIT;
					b.n[i+j+k] %= LIMIT;
				}
			}
		}
		*this = b;
	}
	void print() {
		bool begin = false;
		int len, i, j;
		for(i = MAX - 1; i >= 0; i--) {
			if(n[i] == 0) {
				if(begin) {
					printf("00000");
				}
			} else {
				if(begin) {
					len = 5 - getLen(n[i]);
					for(j = 0; j < len; j++) {
						putchar('0');
					}
				} else {
					begin = true;
				}
				printf("%lld", n[i]);
			}
		}
		putchar('\n');
	}
};

int main()
{
	BigInt big[N_MAX], p;
	int i, j, n;
	
	big[0].set(1);
	for(i = 1; i < N_MAX; i++) {
		for(j = 0; j < i; j++) {
			p = big[j];
			p *= big[i-j-1];
			big[i] += p;
		}
	}
	while(scanf("%d", &n) == 1) {
		if(n == -1) {
			return 0;
		} else {
			big[n].print();
		}
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -