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

📄 2240486_ac_0ms_144k.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
# include <stdio.h>
# include <string.h>
# define max(a,b) a>b?a:b
char num[251][500];

void cpy(char a[],char b[])
{
	int i, l;

	l = strlen(b);
	for(i = 0; i < l; i++)
		a[i] = b[l-1-i];
	a[l] = '\0';
}

void add(char a[],char b[])
{
	int la, lb;
	int i, w, t;

	w = 0;
	la = strlen(a);lb = strlen(b);
	for(i = 0; i < (max(la,lb)); i++)
	{
		if(i >= la)
			a[i] = '0';
		if(i >= lb)
			b[i] = '0';
		t = a[i]-'0'+b[i]-'0'+w;
		if(t > 9)
		{
			t %= 10;
			w = 1;
		}
		else
			w = 0;
		a[i] = t+'0';
	}
	if(w)
		a[i++] = '1';
	a[i] = '\0';
}

void init()
{
	int i;
	char tmp[500], tmp1[500];

	strcpy(num[0],"1");
	strcpy(num[1],"1");
	strcpy(num[2],"3");
	for(i = 3; i < 251; i++)
	{
		cpy(tmp,num[i-2]);
		cpy(tmp1,num[i-1]);
		add(tmp,tmp);
		add(tmp,tmp1);
		cpy(num[i],tmp);
	}
}

void input()
{
	int n;

	while(scanf("%d",&n)==1)
		puts(num[n]);
}

int main()
{
	init();
	input();
	return 1;
}

⌨️ 快捷键说明

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